Python 不可变numpy数组?
有没有一种简单的方法来创建不可变的NumPy数组Python 不可变numpy数组?,python,arrays,numpy,immutability,readonly,Python,Arrays,Numpy,Immutability,Readonly,有没有一种简单的方法来创建不可变的NumPy数组 如果必须从ndarray派生一个类才能做到这一点,那么为了实现不变性,必须重写的最小方法集是什么?您可以使numpy数组不可写: a = np.arange(10) a.flags.writeable = False a[0] = 1 # Gives: ValueError: assignment destination is read-only 另请参见本主题中的讨论: 以及文件: 为什么需要不变性?@KennyTM可以避免由于意外修改假定
如果必须从
ndarray
派生一个类才能做到这一点,那么为了实现不变性,必须重写的最小方法集是什么?您可以使numpy数组不可写:
a = np.arange(10)
a.flags.writeable = False
a[0] = 1
# Gives: ValueError: assignment destination is read-only
另请参见本主题中的讨论:
以及文件:
为什么需要不变性?@KennyTM可以避免由于意外修改假定不变的内容而导致的编码错误。或者,
a.setflags(write=False)
@lafrasu您认为哪种形式是首选形式,setflags()
或标志。writeable=
?@aix:快速查看文档会发现这两种方法似乎是相同的。就我个人而言,我更喜欢使用一种方法来设置属性。这是否也使其可记忆?重要!!Numpy没有不可变的数组。具有.flags.writeable=False
的数组仍然不是不可变的。如果x
是一个数组,y=x[:];x、 flags.writeable=False;y[0]=5
将x
的第一个元素更新为5
。