np.hstack函数的用法
np.hstack
是 numpy
中的一个函数,用于将多个数组沿**水平方向(列方向)**堆叠。它适用于一维数组和多维数组,但要求所有数组在除第二个轴(列轴)以外的其他轴上形状相同。
语法:
numpy.hstack(tup)
tup
:一个包含多个数组的元组或列表,这些数组将被水平堆叠。
用法示例:
1. 一维数组的堆叠
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
result = np.hstack((a, b))
print(result)
输出:
[1 2 3 4 5 6]
2. 二维数组的堆叠
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
result = np.hstack((a, b))
print(result)
输出:
[[1 2 5 6]
[3 4 7 8]]
3. 多维数组的堆叠
import numpy as np
a = np.array([[[1, 2], [3, 4]]])
b = np.array([[[5, 6], [7, 8]]])
result = np.hstack((a, b))
print(result)
输出:
[[[1 2 5 6]
[3 4 7 8]]]
注意事项:
-
形状匹配:
- 对于一维数组,长度可以不同。
- 对于多维数组,除第二个轴(列轴)外,其他轴的长度必须相同。
- 例如,
a.shape = (2, 3)
和b.shape = (2, 4)
可以堆叠,结果为(2, 7)
。
-
与
np.vstack
的区别:np.hstack
是水平堆叠(沿列方向)。np.vstack
是垂直堆叠(沿行方向)。
-
与
np.concatenate
的关系:np.hstack
是np.concatenate
的特例,相当于np.concatenate(tup, axis=1)
。
示例:形状不匹配的情况
如果数组形状不匹配,np.hstack
会抛出错误:
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]]) # 形状为 (1, 2),与 a 的形状 (2, 2) 不匹配
result = np.hstack((a, b)) # 会抛出 ValueError
错误信息:
ValueError: all the input arrays must have same number of dimensions
总结:
np.hstack
用于将数组沿水平方向堆叠。- 适用于一维和多维数组,但需要满足形状匹配条件。
- 是
np.concatenate(axis=1)
的简化版本。