如何从Python NumPy数组中获取多列?

3

我有一个名为"data"的numpy数组。我想检索除第6个字段之外的所有字段。目前,我正在使用以下代码:

x = data[:,[0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17]]  

虽然这种方法达到了解决问题的目的,但我感觉它并不是正确的方式。

我尝试了许多其他的方法,比如:

   x = data[:, [:,6 and 7,:]],  
   x = data[:, [:,6 or 7,:]], etc  

但是似乎什么都不起作用。

我也在其他地方检查过,但没有找到任何解决办法。请建议一些简单的方法来解决这个问题。

4个回答

2

如果您需要丢弃多列,则以下是更通用的答案:

import numpy
x =  numpy.array(data)[:,range(0,6)+range(7,18)]

1

numpy.delete函数返回一个新的数组,其中指定的列已删除,可以沿任何你想要的轴进行操作。以下代码等同于您上面发布的第一条语句:

x = numpy.delete(data, 6, axis=1)

0
这样怎么样:
cols = range(0, 18)
cols.remove(6)
x = data[:, cols]

0
另一种方法是:(使用列表推导式)
x = data[:,[index for index in range(18) if index not in [6]]]

还有一个好处是,通过添加更多的值,它也很容易扩展。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接