在Python中的numpy.append()

Python numpy append() 函式用於合併兩個陣列。此函式會回傳一個新陣列,而原始陣列則保持不變。

NumPy append() 語法

函式語法如下:

numpy.append(arr, values, axis=None)
  • 參數 arr 可以是類似陣列的物件或 NumPy 陣列。數值會附加到此陣列的複本中。
  • 參數 values 是類似陣列的物件,會附加到 “arr” 元素的末尾。
  • 參數 axis 指定附加數值的軸。如果未提供軸,則兩個陣列都會被扁平化。

Python numpy.append() 範例

讓我們看一些 NumPy append() 函式的範例。

1. 扁平化兩個陣列

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()也能正常工作。
  • 在第二個例子中,數組形狀為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