我有兩個陣列的2D陣列2D陣列訪問,一個是索引對的矩陣,numpy的:具有索引
a = array([[[0,0],[1,1]],[[2,0],[2,1]]], dtype=int)
而另一個是數據的矩陣,以訪問在這些指數
b = array([[1,2,3],[4,5,6],[7,8,9]])
我希望能夠使用a的索引來獲得b
的條目。只是做:
>>> b[a]
不起作用,因爲它給出了在a
每個條目B的一排,即
array([[[[1,2,3],
[1,2,3]],
[[4,5,6],
[4,5,6]]],
[[[7,8,9],
[1,2,3]],
[[7,8,9],
[4,5,6]]]])
當我想用索引對在a
最後軸給這兩個指數的b
:
array([[1,5],[7,8]])
是否有這樣做的一個乾淨的方式,或者我需要重塑b
和組合的01列以相應的方式?
在我的實際問題a
約有500萬條目,而b
是100乘100,我想避免循環。
看起來你在'a'附近有一個額外的支架。 a = array([[0,0],[1,1],[2,0],[2,1]],dtype = int)是否工作? – colcarroll
@JLLagrange它應該在那裏。 'a.shape'應該是'(2,2,2)',或者更一般地說,'(n,m,2)'和結果'(n,m,1)'(='(n,m) ')。 – Lucas