我有兩個數組,第一個是(n,2)數組,其中包含數據池中選擇的開始和結束,第二個數據池。如何使用行[a,b]將另一個數組索引爲數據[a:b]?
一般的想法是使用第一個從第二個數據中提取相關數據,但我沒有看到如何用numpy乾淨地做到這一點。
我發現下面的解決方案,但它看起來笨拙:
relevant_data = datapool[np.arange(*selection[0])]]
任何想法?
更新:嵌套索引的能力是一個很大的優勢(獲得選擇的子部分)。
我有兩個數組,第一個是(n,2)數組,其中包含數據池中選擇的開始和結束,第二個數據池。如何使用行[a,b]將另一個數組索引爲數據[a:b]?
一般的想法是使用第一個從第二個數據中提取相關數據,但我沒有看到如何用numpy乾淨地做到這一點。
我發現下面的解決方案,但它看起來笨拙:
relevant_data = datapool[np.arange(*selection[0])]]
任何想法?
更新:嵌套索引的能力是一個很大的優勢(獲得選擇的子部分)。
使用slice
:
In [1]: row = [4,7]
In [2]: data = range(10000)
In [3]: data[slice(*row)]
Out[3]: [4, 5, 6]
一個比使用slice()
更簡單的解決方案是
row = [4, 7]
data[row[0]:row[1]]
這可能是更容易閱讀,因爲它是更明確一點。
謝謝,我喜歡pythonic的清晰度,但如上所述,分行索引的能力很可能是有用的。不過,我會「解決」解決方案,看看是否存在很大的性能差異。 – LBarret
@Lionel:當然你可以使用'data [selection [index,0]:selection [index,1]]'。 –
謝謝,這可能是我想要的。切片符號允許嵌套索引(獲取行的子部分),這對我來說很有用。我仍然擔心拆包行的成本,但我看不出如何避免它。 – LBarret