hstack()
hstack()函数通常被我们称为行连接函数,即按行连接数组,
但它真的是按行连接吗?
对于三维及以上的数组,行又指什么呢?
我们先来看几段代码(代码后面是输出):
import numpy as np
a=np.array([1,2,3])
b=a.copy()
print(np.hstack((a,b)))
[1 2 3 1 2 3]
import numpy as np
a=np.array([[1,2,3],[4,5,6]])
b=a.copy()
print(np.hstack((a,b)))
[[1 2 3 1 2 3]
[4 5 6 4 5 6]]
import numpy as np
a=np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
b=a.copy()
print(np.hstack((a,b)))
[[[ 1 2 3]
[ 4 5 6]
[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]
[ 7 8 9]
[10 11 12]]]
对于一维及二维数组,我们可以看到,hstack()函数确实是常规意义上的按行连接。
但是对于三维数组,hstack()函数并没有将他们按常规意义上的行连接,
而是按其第二个维度连接。
我们不妨将它们放到坐标系中去看看,
首先,
一维数组的情况:
连接后
二维数组连接后的情况:
三维连接前的情况:
连接后(为了表现清楚,这里用不同颜色表示了z轴坐标不同的数,下面四维图同理):
从这张图里,我们可以清楚地看到它其实是按y轴连接,而非此前的x轴。
但如果我们把x轴给压没了(比