numpy.char.chararray.setflags#

方法

char.chararray.setflags(write=None, align=None, uic=None)#

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

这些布尔型标志会影响 NumPy 如何解释由 a 使用的内存区域(参见下面的说明)。ALIGNED 标志仅当数据实际根据其类型对齐时才能设置为 True。WRITEBACKIFCOPY 标志永远不能设置为 True。WRITEABLE 标志仅当数组拥有自己的内存,或内存的最终所有者暴露了一个可写入的缓冲区接口,或是一个字符串时,才能设置为 True。(对字符串的例外是为了在反序列化时无需复制内存。)

参数
write布尔型, 可选

描述 a 是否可写入。

align布尔型, 可选

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

uic布尔型, 可选

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