2016-07-03 3 views
0

で2次元配列することにより、2次元配列:私が欲しいものサブセット私は例えば、(彼らは同じ長さを持っている)別の2次元配列をサブセットする2次元配列を使用したいのpython

import numpy as np 
tmp = np.array([[0.33, 0.67], [0.67, 0.33]]) 
index = np.array([[1], [0]]) 

はこのようなものです:

In[91]: np.array([tmp[i][index[i]] for i in range(len(index))]) 

Out[91]: 
array([[ 0.67], 
     [ 0.67]]) 

これは機能しますが、これを行うにはよりスマートで効率的な方法がありますか?

+0

クイックチェックを:あなたが行っています'index.shape [1]!= 1'のような場合は?もしそうなら、既存の表現と同等の結果を生み出すべきでしょうか? – user2357112

答えて

0

あなたは意図した項目を取得するために、単純なインデックスを使用し、その後、列としてごindexアレイとinedx自体のshape()を使用して行のインデックスを作成することができます。

>>> tmp[(np.array(index.shape[::-1])-1)[:,None], index] 
array([[ 0.67], 
     [ 0.67]]) 
関連する問題