numpy.ndarray.setflags#
方法
- ndarray.setflags(write=None, align=None, uic=None)#
分别设置数组标志 WRITEABLE、ALIGNED、WRITEBACKIFCOPY.
这些布尔值标志影响 numpy 如何解释 a 使用的内存区域(见下面的注释).ALIGNED 标志只有在数据实际上根据类型对齐时才能设置为 True.WRITEBACKIFCOPY 标志永远不能设置为 True.WRITEABLE 标志只有在数组拥有自己的内存,或内存的最终所有者暴露了一个可写的缓冲区接口,或是一个字符串时,才能设置为 True.(字符串的例外是为了在解包时可以不复制内存.)
- 参数:
- writebool, 可选
描述是否可以写入 a.
- alignbool, 可选
描述 a 是否为其类型正确对齐.
- uicbool, 可选
描述 a 是否是另一个”基础”数组的副本.
备注
数组标志提供了关于如何解释用于数组的内存区域的信息.有7个布尔标志在使用中,其中只有三个可以由用户更改:WRITEBACKIFCOPY、WRITEABLE 和 ALIGNED.
可写 (W) 数据区域可以被写入;
ALIGNED (A) 数据和步长适当地对齐以适应硬件(由编译器决定);
WRITEBACKIFCOPY (X) 这个数组是某个其他数组(由 .base 引用)的副本.当调用 C-API 函数 PyArray_ResolveWritebackIfCopy 时,基数组将用这个数组的内容更新.
所有标志都可以使用单个(大写)字母以及全名来访问.
示例
>>> import numpy as np >>> y = np.array([[3, 1, 7], ... [2, 0, 0], ... [8, 5, 9]]) >>> y array([[3, 1, 7], [2, 0, 0], [8, 5, 9]]) >>> y.flags C_CONTIGUOUS : True F_CONTIGUOUS : False OWNDATA : True WRITEABLE : True ALIGNED : True WRITEBACKIFCOPY : False >>> y.setflags(write=0, align=0) >>> y.flags C_CONTIGUOUS : True F_CONTIGUOUS : False OWNDATA : True WRITEABLE : False ALIGNED : False WRITEBACKIFCOPY : False >>> y.setflags(uic=1) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: cannot set WRITEBACKIFCOPY flag to True