Numpy append vs concatenate
参考:numpy append vs concatenate
在数据处理和科学计算中,经常需要对数组进行操作,比如添加或合并数据。NumPy库提供了多种方法来处理数组,其中append
和concatenate
是两个常用的函数。本文将详细介绍这两个函数的用法、区别以及适用场景,并通过多个示例代码来展示如何在实际中使用这些函数。
numpy append
numpy.append
函数用于将值添加到NumPy数组的末尾。这个函数首先会将输入数组展平,然后在其后添加值,最后返回一个新的数组。append
函数的语法如下:
numpy.append(arr, values, axis=None)
arr
:被添加的数组。values
:要添加的值,可以是一个标量、列表、元组或另一个数组。axis
:沿着哪个轴添加值。如果不指定,则会将数组展平。
示例1:向一维数组添加元素
import numpy as np
arr = np.array([1, 2, 3])
values = 4
result = np.append(arr, values)
print(result) # 输出:[1 2 3 4]
Output:
示例2:向二维数组添加行
import numpy as np
arr = np.array([[1, 2], [3, 4]])
values = [[5, 6]]
result = np.append(arr, values, axis=0)
print(result) # 输出:[[1 2] [3 4] [5 6]]
Output:
示例3:向二维数组添加列
import numpy as np
arr = np.array([[1, 2], [3, 4]])
values = [[5], [6]]
result = np.append(arr, values, axis=1)
print(result) # 输出:[[1 2 5] [3 4 6]]
Output:
numpy concatenate
numpy.concatenate
函数用于沿指定轴连接两个或多个数组。与append
不同,concatenate
可以同时处理多个数组,并且不会自动展平输入数组。concatenate
函数的语法如下:
numpy.concatenate((a1, a2, ...), axis=0)
(a1, a2, ...)
:一个元组,包含要连接的数组。axis
:沿着哪个轴进行连接。
示例4:连接两个一维数组
import numpy as np
a1 = np.array([1, 2, 3])
a2 = np.array([4, 5, 6])
result = np.concatenate((a1, a2))
print(result) # 输出:[1 2 3 4 5 6]
Output:
示例5:连接两个二维数组(沿轴0)
import numpy as np
a1 = np.array([[1, 2], [3, 4]])
a2 = np.array([[5, 6], [7, 8]])
result = np.concatenate((a1, a2), axis=0)
print(result) # 输出:[[1 2] [3 4] [5 6] [7 8]]
Output:
示例6:连接两个二维数组(沿轴1)
import numpy as np
a1 = np.array([[1, 2], [3, 4]])
a2 = np.array([[5, 6], [7, 8]])
result = np.concatenate((a1, a2), axis=1)
print(result) # 输出:[[1 2 5 6] [3 4 7 8]]
Output:
区别和选择
numpy.append
和numpy.concatenate
虽然都可以用来合并数组,但它们在功能和性能上有一些区别:
- 功能差异:
append
会自动展平数组,除非指定axis
参数;而concatenate
则保持数组的原始维度,需要明确指定要连接的轴。 - 性能差异:当处理大数组或多个数组时,
concatenate
的性能通常优于append
,因为append
在内部实际上是调用了concatenate
,并且还涉及额外的展平操作。
根据具体需求选择合适的函数。如果需要保持数组维度或合并多个数组,推荐使用concatenate
。如果只是简单地添加几个元素到数组末尾,并且不关心性能影响,可以使用append
。
结论
本文详细介绍了NumPy中的append
和concatenate
函数,包括它们的用法、区别以及适用场景。通过多个示例代码,展示了如何在实际中使用这些函数来处理数组。