numpy.matrix.setflags#

method

matrix.setflags(write=None, align=None, uic=None)#

分别设置数组标志 WRITEABLE,ALIGNED,WRITEBACKIFCOPY.

这些布尔值标志会影响 numpy 如何解释 a 使用的内存区域(请参见下面的 Notes). 只有当数据实际上按照类型对齐时,才能将 ALIGNED 标志设置为 True. 永远不能将 WRITEBACKIFCOPY 标志设置为 True. 只有当数组拥有自己的内存,或者内存的最终所有者公开可写缓冲区接口,或者是一个字符串时,才能将 WRITEABLE 标志设置为 True.(创建字符串的例外是为了在不复制内存的情况下完成 unpickling.)

参数:
bool,可选

描述是否可以写入 a .

对齐bool,可选

描述 a 是否针对其类型正确对齐.

uicbool,可选

描述 a 是否是另一个"基础"数组的副本.

注释

数组标志提供有关如何解释用于数组的内存区域的信息.目前使用了 7 个布尔标志,其中只有三个可以由用户更改:WRITEBACKIFCOPY,WRITEABLE 和 ALIGNED.

WRITEABLE (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