这是一个简单的问题,但假设我有一个MxN矩阵。所有我想做的是提取特定的列,并将它们存储在另一个numpy数组中,但我得到无效的语法错误。 代码如下:
extractedData = data[[:,1],[:,9]].
似乎上面这句话就足够了,但我觉得不行。我四处寻找,但没有找到任何关于这个特定场景的语法。
这是一个简单的问题,但假设我有一个MxN矩阵。所有我想做的是提取特定的列,并将它们存储在另一个numpy数组中,但我得到无效的语法错误。 代码如下:
extractedData = data[[:,1],[:,9]].
似乎上面这句话就足够了,但我觉得不行。我四处寻找,但没有找到任何关于这个特定场景的语法。
当前回答
你可以使用以下方法:
extracted_data = data.ix[:,['Column1','Column2']]
其他回答
我无法编辑所选的答案,所以我添加了一个答案,以澄清使用整数索引似乎返回一个视图(而不是一个副本),而使用列表返回一个副本
>>> x = np.zeros(shape=[2, 3])
>>> y = x[:, [0, 1]]
>>> z1, z2 = x[:, 0], x[:, 1]
>>> y[0, 0] = 1
>>> print(y)
[[1. 0.]
[0. 0.]]
>>> print(x)
[[0. 0. 0.]
[0. 0. 0.]]
>>> z1[0] = 2
>>> print(z1)
[2. 0.]
>>> print(x)
[[2. 0. 0.]
[0. 0. 0.]]
当你使用这样的列表从N-D数组中选择列时,还有一件事你应该注意:
data[:,:,[1,9]]
如果您正在删除一个维度(例如,通过只选择一行),结果数组将(由于某种原因)被打乱。所以:
print data.shape # gives [10,20,30]
selection = data[1,:,[1,9]]
print selection.shape # gives [2,20] instead of [20,2]!!
你可以使用以下方法:
extracted_data = data.ix[:,['Column1','Column2']]
我认为这里的解决方案不再使用python版本的更新,一种方法是使用新的python函数来实现它:
extracted_data = data[['Column Name1','Column Name2']].to_numpy()
这会给你想要的结果。
您可以在这里找到文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_numpy.html#pandas.DataFrame.to_numpy
你也可以使用extractedData=data([:,1],[:,9])