这是一个简单的问题,但假设我有一个MxN矩阵。所有我想做的是提取特定的列,并将它们存储在另一个numpy数组中,但我得到无效的语法错误。 代码如下:

extractedData = data[[:,1],[:,9]]. 

似乎上面这句话就足够了,但我觉得不行。我四处寻找,但没有找到任何关于这个特定场景的语法。


当前回答

我猜你想要第1列和第9列?

若要一次选择多个列,请使用

X = data[:, [1, 9]]

若要一次选择一个,请使用

x, y = data[:, 1], data[:, 9]

名称:

data[:, ['Column Name1','Column Name2']]

你可以从data.dtype.names…

其他回答

你可以使用以下方法:

extracted_data = data.ix[:,['Column1','Column2']]

我猜你想要第1列和第9列?

若要一次选择多个列,请使用

X = data[:, [1, 9]]

若要一次选择一个,请使用

x, y = data[:, 1], data[:, 9]

名称:

data[:, ['Column Name1','Column Name2']]

你可以从data.dtype.names…

假设你想用这个代码片段获取列1和列9,它应该是:

extractedData = data[:,[1,9]]

你也可以使用extractedData=data([:,1],[:,9])

我无法编辑所选的答案,所以我添加了一个答案,以澄清使用整数索引似乎返回一个视图(而不是一个副本),而使用列表返回一个副本

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