numpy.chararray.setflags

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

分别设置数组标志WRITEABLE,ALIGNED和UPDATEIFCOPY。

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

参数:

:bool,可选

描述是否可以写入a

align:bool,可选

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

uic:bool,可选

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

笔记

数组标志提供关于如何解释用于数组的存储区的信息。有6个布尔标志在使用,其中只有三个可以由用户更改:UPDATEIFCOPY,WRITEABLE和ALIGNED。

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

ALIGNED(A)数据和步长适合硬件(由编译器确定);

UPDATEIFCOPY(U)这个数组是一些其他数组的副本(由.base引用)。当此数组被释放时,基数组将使用此数组的内容进行更新。

所有标志可以使用它们的第一个(大写)字母以及全名来访问。

例子

>>> 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
  UPDATEIFCOPY : False
>>> y.setflags(write=0, align=0)
>>> y.flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : True
  WRITEABLE : False
  ALIGNED : False
  UPDATEIFCOPY : False
>>> y.setflags(uic=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: cannot set UPDATEIFCOPY flag to True