我知道这是关于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
答案 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
,我构造一个列索引列表。您可以一次选择所有列,而不是逐个选择。