2017-05-10 48 views
0

例如:numpy的索引:獲得的特定行對每列

A = np.random.randn(4,32) 
inds = np.random.randint(4,size=32) 
res = A[inds,np.arange(32)] 

這得到期望的結果,但是相當麻煩的。有更簡單的方法來獲得這種行爲? (例如,使用高級索引)

+2

那麼,你用'A [inds,np.arange(32)]'做的操作名稱是什麼? – Divakar

+0

提示:它與「侵佔」押韻 –

+0

'inds'包含所需行的陣列,每列一個。只要執行'A [inds]',就會得到每個所需行的* all *列,因此需要使用'np.arange'。 – zergylord

回答

0
inds = np.random.randint(4,size=32) 
result=[] 
for i in range(0,len(inds): 
    result.append(A[inds[i],i]) 
    print result 
0
res = A[inds,np.arange(32)] 

上面正好使用與numpy的INDS是所述行指數和np.arange(32)是所述列索引被提取高級索引。

你的更高級的解決方案是什麼?

相關問題