广播到numpy矩阵时出错

时间:2015-04-13 02:56:23

标签: python numpy matrix

我知道这是关于stackoverflow的一个相对常见的话题,但我无法找到我想要的答案。基本上,我试图制作非常有效的代码(我有相当大的数据集)来从矩阵中获取某些数据列。以下是我到目前为止的情况。它给了我这个错误:无法将输入数组从形状(2947,1)广播到形状(2947)

def get_data(self, colHeaders):
        temp = np.zeros((self.matrix_data.shape[0],len(colHeaders)))
        for col in colHeaders:
            index = self.header2matrix[col]
            temp[:,index:] = self.matrix_data[:,index]
        data = np.matrix(temp)
        return temp

1 个答案:

答案 0 :(得分:0)

也许这个简单的例子会有所帮助:

In [70]: data=np.arange(12).reshape(3,4)
In [71]: header={'a':0,'b':1,'c':2}
In [72]: col=['c','a']
In [73]: index=[header[i] for i in col]

In [74]: index
Out[74]: [2, 0]

In [75]: data[:,index]
Out[75]: 
array([[ 2,  0],
       [ 6,  4],
       [10,  8]])

data是某种2D数组,header是将名称映射到列号的字典。使用输入col,我构造一个列索引列表。您可以一次选择所有列,而不是逐个选择。