NumPy 配列の追加

Numpy には、Python での list に対する append 操作と同様に、配列にデータを追加するための append 関数もあります。しかし、場合によっては、NumPy の append も Python の listextend メソッドに少し似ています。

配列 append

最初に ndarray.append の構文をリストしましょう。

`numpy.append(arr, values, axis = None)`

入力パラメータ

パラメータ名 データの種類 説明
arr array_like 要素を追加する配列
values array_like 追加された配列
axis INT values 追加される軸

いくつか例を挙げましょう。

In [1]: import numpy as np
        arrayA = np.arange(12).reshape(3, 4)
        arrayB = np.ones((1, 4))
        np.append(arrayA, arrayB)
        
Out[1]: array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10., 11.,  1.,
        1.,  1.,  1.])

axis が指定されていない場合、arrvalues の両方が操作前にフラット化されます。結果は 1 次元配列になります。上記の例では、2つの指定された配列の形状を気にする必要はありません。

In [2]: np.append(arrayA, arrayB, axis=0)
Out[2]: array([[ 0.,  1.,  2.,  3.],
       [ 4.,  5.,  6.,  7.],
       [ 8.,  9., 10., 11.],
       [ 1.,  1.,  1.,  1.]])
In [2]: np.append(arrayA, np.ones((1, 3)), axis=0)
        ---------------------------------------------------------------------------
        ValueError                                Traceback (most recent call last)
        <ipython-input-25-fe0fb14f5df8> in <module>()
        ----> 1 np.append(arrayA, np.ones((1, 3)), axis=0)

        D:\ProgramData\Anaconda3\lib\site-packages\numpy\lib\function_base.py in append(arr, values, axis)
           5164         values = ravel(values)
           5165         axis = arr.ndim-1
        -> 5166     return concatenate((arr, values), axis=axis)

        ValueError: all the input array dimensions except for the concatenation axis must match exactly

axis0 に等しい場合、配列 values が列の方向で arr に追加されます。指定された 2つの配列の行の長さが同じでない場合は、ValueError が発生します - ValueError: all the input array dimensions except for the concatenation axis must match exactly

パラメータ axis=1 を使用して、行方向にデータを追加してみてください。

comments powered by Disqus