8181yuuta のすべての投稿

関数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の使い方の例

関数ndarray.partitionの使い方の例

関数の機能:指定した要素の前後に小さい値または大きい値が集まる様に並び替える

例1 : 要素を1つだけ指定

>>> a = np.array([3, 4, 2, 1, 8, 3, 3])
>>> a.partition(3)
>>> a
array([3, 1, 2, 3, 8, 4, 3])
この例では7要素の配列の4つ目の要素(インデックスは3)で仕切って並べ替えています。4つ目の要素は3で、1〜3つ目の要素は3以下に、5〜7つ目の要素は3以上になっていることが分かります。

例2 : 要素を2つ指定

>>> a = np.array([3, 4, 2, 1, 8, 3, 4, 7, 1, 9])
>>> a.partition((2,5))
>>> a
array([1, 1, 2, 3, 3, 4, 8, 7, 4, 9])
この例では10要素の配列の3つ目の要素(インデックスは2)と6つ目の要素(インデックスは5)で仕切って並べ替えています。仕切った2箇所についてそれぞれ、仕切った要素より前方はその要素以下に、後方はその要素以上になっていることが分かります。
関連項目
関数ndarray.argpartitionの使い方の例

関数ndarray.transposeの使い方の例

関数の機能:軸を転置した配列のビューを返却

>>> a = np.arange(2*3*4).reshape((2, 3, 4))
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> b = a.transpose((1,2,0))
>>> b
array([[[ 0, 12],
        [ 1, 13],
        [ 2, 14],
        [ 3, 15]],

       [[ 4, 16],
        [ 5, 17],
        [ 6, 18],
        [ 7, 19]],

       [[ 8, 20],
        [ 9, 21],
        [10, 22],
        [11, 23]]])
>>> b.shape
(3, 4, 2)
この例では、配列aの軸を下記のように入れ替えています。
  axis 1 → axis 0
  axis 2 → axis 1
  axis 0 → axis 2
パラメータの(1,2,0)は、赤字の数字を並べたものです。
元の配列の持つ軸が全て指定されていなかったり、元の配列にない軸が指定されたりすると下記の様にエラーとなります。
>>> a.transpose((1,0))
Traceback (most recent call last):
ValueError: axes don't match array
>>> a.transpose((1,0,3))
Traceback (most recent call last):
numpy.AxisError: axis 3 is out of bounds for array of dimension 3
関連項目
関数ndarray.swapaxesの使い方の例
属性ndarray.Tの使い方の例