「numpy」カテゴリーアーカイブ

属性ndarray.flatの使い方の例

属性の内容:配列の一次元イテレータ

>>> a = np.array([[1, 2, 3],
	          [4, 5, 6]])
>>> a.flat
<numpy.flatiter object at 0x7faf0398ac00>
>>> a.flat[0]
1
>>> a.flat[1]
2
>>> a.flat[5]
6
>>> a.flat[6]
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    a.flat[6]
IndexError: index 6 is out of bounds for axis 0 with size 6
>>> 
配列 a は2行3列の6要素の配列なので、a.flatにインデックス演算子を付けて0〜5のインデックス値を指定して要素にアクセスすることができます。
インデックス6以上(または0未満)を指定すると範囲外なのでエラーが発生します。

属性ndarray.baseの使い方の例

属性の内容:この配列が他のオブジェクトのメモリーを使用している場合には、そのベースオブジェクト、そうでない場合はNone

>>> a = np.array([1, 2, 3])
>>> b = a[1:]
>>> b
array([2, 3])
>>> b.base
array([1, 2, 3])
>>> b.base is a
True
>>> print(a.base)
None
この例では、配列aのスライスbを作り、bのbase属性を確認しています。
配列aは別のオブジェクトのメモリーは使用していないのでbase属性はNoneとなります。
関連項目
関数ndarray.viewの使い方の例
関数ndarray.transposeの使い方の例
属性ndarray.Tの使い方の例

関数ndarray.setfieldの使い方の例

関数の機能:データの一部分に指定した型の値を入れる

例 : 文字列型の配列の一部の文字を別の文字に置き換える

>>> a = np.array(['abcde', 'fghij', '12345', 'xyz'])
>>> a.setfield('S', '<U1')
>>> a
array(['Sbcde', 'Sghij', 'S2345', 'Syz'], dtype='<U5')
この例では、配列 a の各要素の1文字目を'S'の文字に置き換えています。
下記の様にoffset=4(一文字のバイト数)と指定すれば、2文字目が置き換わります。
>>> a = np.array(['abcde', 'fghij', '12345', 'xyz'])
>>> a.setfield('S', '<U1', offset=4)
>>> a
array(['aScde', 'fShij', '1S345', 'xSz'], dtype='<U5')
関連項目
関数ndarray.byteswapの使い方の例
関数ndarray.getfieldの使い方の例
関数ndarray.newbyteorderの使い方の例

関数ndarray.newbyteorderの使い方の例

関数の機能:各要素についてバイトの順序を変更した配列のビューを返却

>>> a = np.array([0x12345678, 0x1a2b3c4d], dtype=np.int32)
>>> b = a.newbyteorder()
>>> list(map(hex, b))
['0x78563412', '0x4d3c2b1a']
この例では、配列 a の各要素について、ビッグエンディアンとリトルエンディアンを切り替えた配列 b を作成しています。
但し、b は a のビューとなっており、メモリーは共通です。
>>> b.base is a
True
このように、b の属性 base を調べると、b のベースオブジェクトが a だということが分かります。
関連項目
関数ndarray.byteswapの使い方の例
関数ndarray.getfieldの使い方の例
関数ndarray.setfieldの使い方の例

関数ndarray.searchsortedの使い方の例

関数の機能:小さい順にソートされた配列に対して、指定の値が挿入されるべき位置のインデックスを返却

 配列は小さい順にソートされていると仮定して処理が行われますので、配列がソートされていない場合は正しく処理されません。

>>> a = np.array([1.0, 1.2, 3.1, 4.3, 5.7, 8.0])
>>> a.searchsorted(3.15)
3
 指定した値が返却されたインデックスの手前に挿入されると、大小関係の順番が保たれます。
 上記の例では、a[3] (= 4.3)の手前に3.15を挿入すれば配列 a の大小関係が保たれることが分かります。
 なお、この関数は配列が小さい順にソートされていると仮定して処理が行われますので、配列がソートされていないと正しく処理されないので注意しましょう。

 複数の値を配列やリストで指定することもできます。

>>> a.searchsorted([3.15, 5.72, 9.47])
array([3, 5, 6])
関連項目
関数ndarray.sortの使い方の例

関数ndarray.dumpsの使い方の例

関数の機能:配列をピクルスにした文字列を返却

>>> a = np.array([[5.7, 3.4],
                  [9.7, 1.4]])
>>> s = a.dumps()
>>> s
b"\x80\x02cnumpy.core.multiarray\n_reconstruct\nq\x00cnumpy\nndarray\nq\x01K\x00\x85q\x02c_codecs\nencode\nq\x03X\x01\x00\x00\x00bq\x04X\x06\x00\x00\x00latin1q\x05\x86q\x06Rq\x07\x87q\x08Rq\t(K\x01K\x02K\x02\x86q\ncnumpy\ndtype\nq\x0bX\x02\x00\x00\x00f8q\x0c\x89\x88\x87q\rRq\x0e(K\x03X\x01\x00\x00\x00<q\x0fNNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tq\x10b\x89h\x03X'\x00\x00\x00\xc3\x8d\xc3\x8c\xc3\x8c\xc3\x8c\xc3\x8c\xc3\x8c\x16@333333\x0b@ffffff#@ffffff\xc3\xb6?q\x11h\x05\x86q\x12Rq\x13tq\x14b."
この例では、配列aをピクルスにしてsという名前の文字列を生成しています。picle.load関数を使えば元の配列の形に復元することができます。
>>> import pickle
>>> pickle.loads(s)
array([[5.7, 3.4],
       [9.7, 1.4]])

関数ndarray.dumpの使い方の例

関数の機能:配列をピクルスにしてファイルに保存する

>>> a = np.array([[5.7, 3.4],
                  [9.7, 1.4]])
>>> a.dump('dumpFile.npy')
>>> b = np.load('dumpFile.npy', allow_pickle=True)
>>> b
array([[5.7, 3.4],
       [9.7, 1.4]])
この例では、配列aをピクルスにして'dumpFile.npy'の名前のファイルとして保存しています。その後、numpy.load関数を使ってファイルの内容を読み込み、bという名前の配列を生成しています。

関数ndarray.argpartitionの使い方の例

関数の機能:指定した要素の前後に小さい値または大きい値が集まる様に並び替えた場合のインデックスの配列を返却

>>> a = np.array([3, 4, 2, 1, 8, 3, 3])
>>> ind = a.argpartition(3)
>>> ind
array([5, 3, 2, 0, 4, 1, 6])
>>> a[ind]
array([3, 1, 2, 3, 8, 4, 3])
この例では7要素の配列の4つ目の要素(インデックスは3)で仕切って並べ替えた時のインデックスをこの関数により取得しています。配列aを配列indの順に並べると、4つ目の要素は3で、1〜3つ目の要素は3以下に、5〜7つ目の要素は3以上になっていることが分かります。
関連項目
関数ndarray.partitionの使い方の例