numpy.matrix.setflags¶
-
matrix.
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