掌握Python numpy.append():数组操作技巧与实例教程

这是文章《在Python中,使用numpy.append()》的第1部分(共1部分)。

内容片段: Python的numpy库中的append()函数用于合并两个数组。该函数会返回一个新的数组,原始数组不会改变。

NumPy append() 语法

函数语法如下:

numpy.append(arr, values, axis=None)
  • arr可以是一个类数组对象或一个NumPy数组。values将被附加到该数组的一个副本上。
  • values是类数组对象,它被附加到”arr”元素的末尾。
  • axis指定了values附加的轴向。如果未提供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]])

# 未提供axis参数,数组元素将被展平
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'沿Axis-0合并2x2数组:\n{arr_merged}')

arr_merged = np.append([[1, 2], [3, 4]], [[10, 20], [30, 40]], axis=1)
print(f'沿Axis-1合并2x2数组:\n{arr_merged}')

输出:

沿Axis-0合并2x2数组:
[[ 1  2]
 [ 3  4]
 [10 20]
 [30 40]]
沿Axis-1合并2x2数组:
[[ 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
>>> 
Numpy Append Valueerror

数组的形状为1×2和2×3。由于轴1的形状不同,引发了ValueError错误。参考:API文档。

bannerAds