numpy.char.chararray.setflags#
方法
- char.chararray.setflags(write=None, align=None, uic=None)#
分别设置数组标志 WRITEABLE、ALIGNED、WRITEBACKIFCOPY。
这些布尔值标志会影响 numpy 如何解释 a 使用的内存区域(参见下面的“注释”)。仅当数据实际上已根据类型对齐时,才能将 ALIGNED 标志设置为 True。WRITEBACKIFCOPY 标志永远无法设置为 True。仅当数组拥有自己的内存,或者内存的最终所有者公开可写缓冲区接口,或者是一个字符串时,WRITEABLE 标志才能设置为 True。(保留字符串的例外情况是为了可以在不复制内存的情况下进行反序列化。)
- 参数:
- writebool, optional
描述 a 是否可写。
- alignbool, optional
描述 a 是否与其类型正确对齐。
- uicbool, optional
描述 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