2014-10-09 50 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