提取numpy的阵列的特定列

问题描述 投票:124回答:8

这是一个简单的问题,但说我有一个m×n矩阵。所有我想要做的是提取特定的列,并将其存储在另一个numpy的数组,但我得到无效的语法错误。下面是代码:

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

这似乎是上面的行应该足够了,但我想不会。我环顾四周,但找不到任何关于这种特定情况下语法明智的。

python syntax numpy
8个回答
235
投票

我假设你想19列?那是

data[:, [1, 9]]

或名称:

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

你可以从data.dtype.names的名字......


26
投票

假设你想获得与该代码段列1和9,它应该是:

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

10
投票

如果你想只提取了一些列:

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]

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

2
投票

有一两件事我想指出的是,如果你想提取的列数为1时,得到矩阵不会是一个矩阵的Mx1如你所料,而是包含您所提取的列的元素的数组。

将其转换为基体中的重塑(M,1)的方法应得到的阵列上使用。


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

1
投票

您可以使用 :

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


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


-4
投票

还可以使用extractedData =数据([:,1],[:,9])

© www.soinside.com 2019 - 2024. All rights reserved.