2014-10-09 114 views
1

我有一个大numpy的阵列data,我希望通过一列[:,8] <= radius过滤,并得到一个不同的列的总和总结不同列[:,7]过滤器,并在numpy的阵列

到目前为止,我有这返回以下“无效片”错误。

>>> data.slice 
(4700, 9) 

>>> np.sum(data[np.where(data[:,8] <= 50):,7]) 
IndexError: invalid slice 

我很新的python所以真的似乎无法弄清楚我在做什么错在这里。任何想法或解释将不胜感激。

回答

3

有没有必要拨打np.where电话。

data = np.random.normal(size=(20, 2)) 
np.sum(data[data[:,0] < 0, 1]) 

在这个例子中,我想去的地方data[:,0] < 0True行,我想列1。所以,只要切片,并拿出总和。

+0

非常感谢你。在那里,我正陷入一种混乱的状态。没意识到我可以用那种方式过滤。非常感激。 – Carl 2014-10-09 23:17:42

+0

实际上,经过一些测试后,这似乎不起作用。 'data [data [:,8] <= radius,7]'不会从第7列返回一个值的数组,而是只返回一个值。 – Carl 2014-10-10 04:58:05

+0

忽略这一点,我的错误与一个变量。 – Carl 2014-10-10 05:04:53