np.column_stack()中的axis类似于np.hstack(tuple)。
关于np.hstack中的理解:Stack arrays in sequence horizontally (column wise)
np.hstack((a,b)),如果a、b是list,则在列上叠加;如果a、b是矩阵array,则在行相同时扩展列,行不变。参见官网例子
>>> a = np.array((1,2,3))
>>> b = np.array((2,3,4))
>>> np.hstack((a,b))
array([1, 2, 3, 2, 3, 4])
>>> a = np.array([[1],[2],[3]])
>>> b = np.array([[2],[3],[4]])
>>> np.hstack((a,b))
array([[1, 2],
[2, 3],
[3, 4]])
其中np.column_stack()与np.hstack()区别: 对于1d的list,会行不变列扩展;对于2d的array,如3*1的array或者list,一样是行不变列扩展。
# 一
a=[1, 2, 3]
b=[11, 22, 33]
np.column_stack((a,b))
Out[21]:
array([[ 1, 11],
[ 2, 22],
[ 3, 33]])
# 二
np.column_stack(([[1],[2],[3]],[[11],[12],[13]]))
Out[22]:
array([[ 1, 11],
[ 2, 12],
[ 3, 13]])
# 三
a_array = np.array([[1],[2],[3]])
b_array = np.array([[2],[3],[4]])
np.column_stack((a_array, b_array))
Out[26]:
array([[1, 2],
[2, 3],
[3, 4]])
import numpy as np
# np.array((1,2,3),(11,22,33))
a=[1,2,3];b=[11,22,33];np.column_stack((a,b))
a=[[1,2,3],[10,20,30]];b=[[11,22,33],[110,220,330]];np.column_stack((a,b))
array([[ 1, 2, 3, 11, 22, 33],
[ 10, 20, 30, 110, 220, 330]])
ab = np.column_stack([np.array(a),np.array(b)])
print(ab,ab.shape)
ab.mean(axis=1)
[[ 1 2 3 11 22 33]
[ 10 20 30 110 220 330]] (2, 6)
array([ 12., 120.])
ab = np.column_stack([np.array(a)])
print(ab,ab.shape)
ab.mean(axis=1)
[[ 1 2 3]
[10 20 30]] (2, 3)
array([ 2., 20.])
a=[1,2,3];b=[11,22,33];
np.column_stack((a,b)).mean(axis=1)
array([ 6., 12., 18.])
[np.column_stack([i]*4) for i in list(range(1,4))]
[array([[1, 1, 1, 1]]), array([[2, 2, 2, 2]]), array([[3, 3, 3, 3]])]
[np.column_stack([i]*4).mean(axis=1) for i in list(range(1,4))]
[array([ 1.]), array([ 2.]), array([ 3.])]