这是一个简单的问题,但假设我有一个MxN矩阵。所有我想做的是提取特定的列,并将它们存储在另一个numpy数组中,但我得到无效的语法错误。 代码如下:
extractedData = data[[:,1],[:,9]].
似乎上面这句话就足够了,但我觉得不行。我四处寻找,但没有找到任何关于这个特定场景的语法。
这是一个简单的问题,但假设我有一个MxN矩阵。所有我想做的是提取特定的列,并将它们存储在另一个numpy数组中,但我得到无效的语法错误。 代码如下:
extractedData = data[[:,1],[:,9]].
似乎上面这句话就足够了,但我觉得不行。我四处寻找,但没有找到任何关于这个特定场景的语法。
当前回答
只是:
>>> m = np.matrix(np.random.random((5, 5)))
>>> m
matrix([[0.91074101, 0.65999332, 0.69774588, 0.007355 , 0.33025395],
[0.11078742, 0.67463754, 0.43158254, 0.95367876, 0.85926405],
[0.98665185, 0.86431513, 0.12153138, 0.73006437, 0.13404811],
[0.24602225, 0.66139215, 0.08400288, 0.56769924, 0.47974697],
[0.25345299, 0.76385882, 0.11002419, 0.2509888 , 0.06312359]])
>>> m[:,[1, 2]]
matrix([[0.65999332, 0.69774588],
[0.67463754, 0.43158254],
[0.86431513, 0.12153138],
[0.66139215, 0.08400288],
[0.76385882, 0.11002419]])
列不需要按顺序排列:
>>> m[:,[2, 1, 3]]
matrix([[0.69774588, 0.65999332, 0.007355 ],
[0.43158254, 0.67463754, 0.95367876],
[0.12153138, 0.86431513, 0.73006437],
[0.08400288, 0.66139215, 0.56769924],
[0.11002419, 0.76385882, 0.2509888 ]])
其他回答
我想指出的一件事是,如果你想提取的列的数量是1,得到的矩阵将不是你可能期望的mx矩阵,而是一个包含你提取的列的元素的数组。
要将其转换为矩阵,应在生成的数组上使用重塑(M,1)方法。
我猜你想要第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.]]