numpy.ndarray.setflags#

方法

ndarray.setflags(write=None, align=None, uic=None)#

設定陣列旗標 WRITEABLE、ALIGNED、WRITEBACKIFCOPY,依序。

這些布林值旗標會影響 numpy 如何解譯 a 使用的記憶體區域(請參閱下方「註解」)。只有在資料實際上根據型態對齊時,ALIGNED 旗標才能設定為 True。WRITEBACKIFCOPY 旗標永遠無法設定為 True。只有在陣列擁有自己的記憶體,或記憶體的最終擁有者公開可寫入的緩衝區介面,或是字串時,WRITEABLE 旗標才能設定為 True。(字串的例外情況是為了在不複製記憶體的情況下完成 unpickling。)

參數:
writebool,選填

描述 a 是否可以寫入。

alignbool,選填

描述 a 是否針對其型態正確對齊。

uicbool,選填

描述 a 是否為另一個「base」陣列的副本。

註解

陣列旗標提供關於如何解譯用於陣列的記憶體區域的資訊。目前使用 7 個布林值旗標,其中只有三個可以由使用者變更:WRITEBACKIFCOPY、WRITEABLE 和 ALIGNED。

WRITEABLE (W) 資料區域可以寫入;

ALIGNED (A) 資料和 strides 針對硬體適當對齊(由編譯器決定);

WRITEBACKIFCOPY (X) 此陣列是另一個陣列(由 .base 參照)的副本。當呼叫 C-API 函數 PyArray_ResolveWritebackIfCopy 時,base 陣列將會使用此陣列的內容更新。

所有旗標都可以使用單個(大寫)字母以及完整名稱來存取。

範例

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