2011-08-11 21 views
0

我有兩個數組,第一個是(n,2)數組,其中包含數據池中選擇的開始和結束,第二個數據池。如何使用行[a,b]將另一個數組索引爲數據[a:b]?

一般的想法是使用第一個從第二個數據中提取相關數據,但我沒有看到如何用numpy乾淨地做到這一點。

我發現下面的解決方案,但它看起來笨拙:

relevant_data = datapool[np.arange(*selection[0])]] 

任何想法?

更新:嵌套索引的能力是一個很大的優勢(獲得選擇的子部分)。

回答

6

使用slice

In [1]: row = [4,7] 

In [2]: data = range(10000) 

In [3]: data[slice(*row)] 
Out[3]: [4, 5, 6] 
+0

謝謝,這可能是我想要的。切片符號允許嵌套索引(獲取行的子部分),這對我來說很有用。我仍然擔心拆包行的成本,但我看不出如何避免它。 – LBarret

4

一個比使用slice()更簡單的解決方案是

row = [4, 7] 
data[row[0]:row[1]] 

這可能是更容易閱讀,因爲它是更明確一點。

+0

謝謝,我喜歡pythonic的清晰度,但如上所述,分行索引的能力很可能是有用的。不過,我會「解決」解決方案,看看是否存在很大的性能差異。 – LBarret

+0

@Lionel:當然你可以使用'data [selection [index,0]:selection [index,1]]'。 –

相關問題