Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不可变numpy数组?_Python_Arrays_Numpy_Immutability_Readonly - Fatal编程技术网

Python 不可变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可以避免由于意外修改假定

有没有一种简单的方法来创建不可变的NumPy数组


如果必须从
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