numpy.recarray.setflags #

方法

重新排列。setflags (=,对齐=, uic =) #

分别设置数组标志 WRITEABLE、ALIGNED、WRITEBACKIFCOPY。

这些布尔值标志影响 numpy 如何解释a使用的内存区域(参见下面的注释)。如果数据实际上根据类型对齐,则 ALIGNED 标志只能设置为 True。 WRITEBACKIFCOPY 和标志永远不能设置为 True。如果数组拥有自己的内存,或者内存的最终所有者公开了可写缓冲区接口,或者是字符串,则标志 WRITEABLE 只能设置为 True。 (字符串例外,这样就可以在不复制内存的情况下完成 unpickle。)

参数
布尔值,可选

描述a是否可以写入。

齐布尔值,可选

描述a是否与其类型正确对齐。

uic布尔值,可选

描述a是否是另一个“基本”数组的副本。

笔记

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

WRITEABLE (W) 数据区域可写入;

对齐 (A) 数据和步幅针对硬件进行适当对齐(由编译器确定);

WRITEBACKIFCOPY (X) 该数组是其他数组(由 .base 引用)的副本。当调用 C-API 函数 PyArray_ResolveWritebackIfCopy 时,将使用该数组的内容更新基本数组。

所有标志都可以使用单个(大写)字母以及全名来访问。

例子

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