Pythonのnumpy.append()

Python numpyのappend()関数は、2つの配列をマージするために使用されます。この関数は新しい配列を返し、元の配列は変更されません。

NumPy append()構文

関数の構文は次のとおりです:

numpy.append(arr, values, axis=None)
  • arrは配列のようなオブジェクトまたはNumPy配列であることができます。値はこの配列のコピーに追加されます。
  • valuesは配列のようなオブジェクトであり、「arr」の要素の末尾に追加されます。
  • axisは、値が追加される軸を指定します。軸が指定されていない場合、両方の配列が平坦化されます。

Python numpy.append()の例

NumPy append()関数のいくつかの例を見てみましょう。

1. 2つの配列を平坦化する

import numpy as np

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[10, 20], [30, 40]])

# 軸が指定されていない場合、配列要素は平坦化されます
arr_flat = np.append(arr1, arr2)

print(arr_flat)  # [ 1  2  3  4 10 20 30 40]

2. 軸に沿ったマージ

import numpy as np

arr_merged = np.append([[1, 2], [3, 4]], [[10, 20], [30, 40]], axis=0)
print(f'Merged 2x2 Arrays along Axis-0:\n{arr_merged}')

arr_merged = np.append([[1, 2], [3, 4]], [[10, 20], [30, 40]], axis=1)
print(f'Merged 2x2 Arrays along Axis-1:\n{arr_merged}')

出力:

Merged 2x2 Arrays along Axis-0:
[[ 1  2]
 [ 3  4]
 [10 20]
 [30 40]]
Merged 2x2 Arrays along Axis-1:
[[ 1  2 10 20]
 [ 3  4 30 40]]
  • 2×2の配列がx軸に沿ってマージされると、出力配列のサイズは4×2になります。
  • 2×2の配列がy軸に沿ってマージされると、出力配列のサイズは2×4になります。

3. 異なる形状の配列のマージ

append() 関数は、軸を除くと両方の配列の形状が異なる場合、ValueError を送出します。これを簡単な例で理解しましょう。

arr3 = np.append([[1, 2]], [[1, 2, 3], [1, 2, 3]])
print(arr3)

arr3 = np.append([[1, 2]], [[1, 2], [3, 4]], axis=0)
print(arr3)
  • 最初の例では、配列要素がフラット化されています。そのため、完全に異なるサイズであっても – 1×2 と 2×3 であっても、append() は問題ありません。
  • 2番目の例では、配列の形状が1×2と2×2です。0軸に沿って追加しているので、0軸の形状は異なっても構いません。他の形状は同じでなければならないため、このappend()も問題ありません。

出力:

[1 2 1 2 3 1 2 3]

[[1 2]
 [1 2]
 [3 4]]

ValueError が発生する別の例を見てみましょう。

>>> import numpy as np
>>> 
>>> arr3 = np.append([[1, 2]], [[1, 2, 3]], axis=0)
Traceback (most recent call last):
  File "", line 1, in 
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/numpy/lib/function_base.py", line 4528, in append
    return concatenate((arr, values), axis=axis)
ValueError: all the input array dimensions except for the concatenation axis must match exactly
>>> 
Python numpy append() ValueError

配列の形状は1×2と2×3です。軸-1の形状が異なるため、ValueErrorが発生します。参考API ドキュメント

Source:
https://www.digitalocean.com/community/tutorials/numpy-append-in-python