在numpy数组中提取特定列

时间:2011-12-05 14:20:48

标签: python syntax numpy

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

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

看起来上面的行应该足够了,但我猜不是。我环顾四周,但在这个具体情况下找不到任何语法方法。

9 个答案:

答案 0 :(得分:219)

我假设你想要列19?这是

data[:, [1, 9]]

或者姓名:

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

您可以从data.dtype.names ...

获取姓名

答案 1 :(得分:24)

假设您希望使用该代码段获取第1列和第9列,它应该是:

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

答案 2 :(得分:9)

如果您只想提取一些列:

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

如果要排除特定列:

idx_OUT_columns = [1, 9]
idx_IN_columns = [i for i in xrange(np.shape(data)[1]) if i not in idx_OUT_columns]
extractedData = data[:,idx_IN_columns]

答案 3 :(得分:4)

只是:

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

答案 4 :(得分:2)

我想指出的一件事是,如果要提取的列数为1,则生成的矩阵将不是您所期望的Mx1矩阵,而是包含您提取的列的元素。

要将其转换为Matrix,应在结果数组上使用重塑(M,1)方法。

答案 5 :(得分:1)

您可以使用:

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

答案 6 :(得分:1)

使用如下列表从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]!!

答案 7 :(得分:0)

我认为这里的解决方案不再适用于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

答案 8 :(得分:-4)

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