2017-03-13 3 views
0

2行目の配列があり、行、colインデックスのリストを使用して要素を抽出したい場合。ブロードキャストを使用してリストを2次元インデックスで持つ2D numpy配列から要素を取得する方法は?

xy = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
idx = np.array([[0, 0], [1, 1], [2, 2]]) 

ループのためのソリューション:そこIDXはタプルのリストがあるが、何がある場合、私は解決策を望んでいない場合

print(elements) 
>> [1, 5, 9] 

私は解決策を見つけた:出力

elements = list() 
for i in idx: 
    elements.append(xy[idx[i][0], xy[idx[i][1]) 

idxを最初にタプルに変換する必要があります。

+0

Numpyは1dインデックスのテイクメソッドを持っていますが、まだそれを使用するように配列を変更する方法を考えていますか? (正しい解決策であれば) – dranobob

+0

私は混乱していますが、これは重複としてマークされていますが、リンクされた質問はインデックスをタプルに変換しています(これは避けようとしています)。 – dranobob

+0

Hooray、その答えが見つかりました。私はここで答えを加えることができないので。 溶液だけスライスを使用している: 要素= XY [IDX [:0]、IDXの[:1]] – dranobob

答えて

0
idy = zip(*idx) 
    output = xy[idy] 
+0

idxを(ループを使って)タプルのリストに変換していませんか? – dranobob

+0

zip [here](https://docs.python.org/3/library/functions.html#zip)を見ると、ループを使用しているだけです。 – dranobob

関連する問題