要使NumPy数组成为只读,有以下两种方法:
- 使用ndarray.flags属性
ndarray对象的flags属性包含一个可读的元组,其中包含有关NumPy数组的信息,如它是否只读。默认情况下,dtype为float32
的大多数NumPy数组是读写的,但有时可以通过将flags属性的“ WRITEABLE_FLAG ”位设置为False来将其更改为只读。
示例:
import numpy as np
a = np.array([1, 2, 3])
print(a.flags)
a.flags.writeable = False
a[0] = 5 # 尝试使用数组中的索引更改数据
print(a) # 发现数组中的数据未被更改,因为数组是只读的。
输出:
C_CONTIGUOUS : True
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False
[1 2 3]
- 使用ndarray.setflags()方法
此方法也可用于将NumPy数组设置为只读。它可以设置多个标志而不只是写入标志。
示例:
import numpy as np
a = np.array([1, 2, 3])
print(a.flags)
a.setflags(write=False)
a[0] = 5 # 尝试使用数组中的索引更改数据
print(a) # 发现数组中的数据未被更改,因为数组是只读的。
输出:
C_CONTIGUOUS : True
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False
[1 2 3]
无论使用哪种方法,将标志设置为只读后,NumPy数组就不再支持任何数据修改操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使NumPy数组成为只读 - Python技术站