np.column_stack()数组与列表list的区别

关于np.column_stack()里面1维数组使用[1维数据]之后的区别

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.])]

你可能感兴趣的:(python,numpy)