在NumPy中,堆叠数组是一个常见的操作,它允许你将多个数组组合成一个新的数组。NumPy提供了多种函数来堆叠数组,包括vstack
、hstack
、dstack
和concatenate
。下面是对这些函数的详细解释及其应用场景:
堆叠(Stacking):将多个数组沿新的轴组合在一起,形成一个新的数组。
vstack
(垂直堆叠)vstack
。hstack
(水平堆叠)hstack
。dstack
(深度堆叠)dstack
。concatenate
(通用堆叠)concatenate
。vstack
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
result = np.vstack((a, b))
print(result)
# 输出:
# [[1 2]
# [3 4]
# [5 6]]
hstack
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5], [6]])
result = np.hstack((a, b))
print(result)
# 输出:
# [[1 2 5]
# [3 4 6]]
dstack
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
result = np.dstack((a, b))
print(result)
# 输出:
# [[[1 5]
# [2 6]]
#
# [[3 7]
# [4 8]]]
concatenate
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
# 沿第一个轴(行)堆叠
result_axis_0 = np.concatenate((a, b), axis=0)
print(result_axis_0)
# 输出:
# [[1 2]
# [3 4]
# [5 6]]
# 沿第二个轴(列)堆叠
result_axis_1 = np.concatenate((a, b.T), axis=1)
print(result_axis_1)
# 输出:
# [[1 2 5]
# [3 4 6]]
问题:堆叠时出现形状不匹配的错误。 原因:尝试堆叠的数组在堆叠方向上的尺寸不一致。 解决方法:
reshape
函数调整数组的形状。例如:
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([5, 6]) # 形状为 (2,),需要调整为 (1, 2)
b = b.reshape(1, -1) # 调整形状为 (1, 2)
result = np.vstack((a, b))
print(result)
# 输出:
# [[1 2]
# [3 4]
# [5 6]]
通过这些方法和示例代码,你可以有效地堆叠NumPy数组,并解决常见的形状不匹配问题。
领取专属 10元无门槛券
手把手带您无忧上云