Numpy水平连接失败

时间:2017-03-13 08:40:40

标签: python arrays numpy concatenation

我希望连接两个形状为(100,3) and (100,7)的numpy数组,以获得(100,10)矩阵。

我已尝试使用hstack, concatenate,但只收到ValueError: all the int arrays must have same number of dimensions

在如下的虚拟示例中,它可以工作......

x=np.arange(30).reshape(10,3)
y=np.arange(20).reshape(10,2)
np.concatenate((x,y), axis=1)

更新1:

我已经使用sklearn的预处理模块(RobustScaler和OneHotEncoder)创建了前两个指标。

更新2:

使用scipy.sparse.hstack时它可以工作,但为什么

3 个答案:

答案 0 :(得分:0)

如果你想垂直连接它axis必须等于0.这在the doc for concatenate中有解释。

在这个链接中我们有这个例子:

  
    
      

a = np.array([[1,2],[3,4]])

             

b = np.array([[5,6]])

             

np.concatenate((a,b),axis = 0)

    
  
array([[1, 2],
       [3, 4],
       [5, 6]])
  
    
      

np.concatenate((a,b.T),axis = 1)

    
  
array([[1, 2, 5],
       [3, 4, 6]])

答案 1 :(得分:0)

这对我来说非常好:

import numpy as np

x=np.arange(100 * 3).reshape(100,3)
y=np.arange(100 * 7).reshape(100,7)
np.hstack((x,y)).shape  # (100, 10)

答案 2 :(得分:0)

稀疏hstack加入coo属性并从中构建一个新的coo稀疏矩阵。 numpy hstack对不同的稀疏结构一无所知。为了进一步解释这一点,我必须解释稀疏构造,并引用各自的功能。