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
>>>

数组形状为1×2和2×3。由于轴1的形状不同,所以会引发ValueError。参考:API文档
Source:
https://www.digitalocean.com/community/tutorials/numpy-append-in-python