有没有简单的方法来创建不可变的NumPy数组?
如果必须从中派生一个类ndarray
来执行此操作,那么为实现不变性而必须重写的最少方法集是什么?
Answers:
您可以使numpy数组不可写:
a = np.arange(10)
a.flags.writeable = False
a[0] = 1
# Gives: ValueError: assignment destination is read-only
另请参见此线程中的讨论:
http://mail.scipy.org/pipermail/numpy-discussion/2008-December/039274.html
和文档:
http://docs.scipy.org/doc/numpy/reference/generation/numpy.ndarray.flags.html
a.setflags(write=False)
。
setflags()
还是flags.writeable=
?
.flags.writeable = False
的数组仍然不可变。如果x
为,y = x[:]; x.flags.writeable = False; y[0] = 5
则将的第一个元素更新x
为5
。