(61) numpy配列を書き換え禁止にする

投稿者: | 2014年9月5日

8,675 views

この記事は最終更新から 1791日 が経過しています。

5行3列の0行列aを作成し、[1,2]の要素の値を3に書き換える。

>>> import numpy as np
>>> a = np.zeros((5,3))
>>> a
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])
>>> a[1,2]=3
>>> a
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  3.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])

この配列aに read only 属性を付与する。

>>> a.flags.writeable = False
>>> a.flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : True
  WRITEABLE : False
  ALIGNED : True
  UPDATEIFCOPY : False

すると、値を変更できなくなる。

>>> a[1,2]=9
Traceback (most recent call last):
  File "", line 1, in 
ValueError: assignment destination is read-only

read only属性を外すと、書き込みができるようになる。

>>> a.flags.writeable = True
>>> a.flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False
>>> a[1,2]=9
>>> a
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  9.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です