2017-08-31 13 views
0

特定のインデックスに対応するテーブルの値を探したい。配列のnumpy配列のためのPythonicの方法(行のインデックス付き)

import numpy as np 
my_array = np.array([[0,1,0,1,0,1,0],[1,2,1,2,1,2,1],[4,5,4,3,3,4,5]]) 

#--------------------------------------------------------------------- 
# my_array :  [[0, 1, 0, 1, 0, 1, 0], 
#     [1, 2, 1, 2, 1, 2, 1], 
#     [4, 5, 4, 3, 3, 4, 5]]) 

、以下のインデックスの配列です: はたとえば、これは私のテーブルです。この配列の値は、my_arrayの行です。 (カラムがインデックス、インデックスの列インデックスは、my_arrayでの最初のインデックスに対応していない。)私はmy_arrayでの行の値に対応するインデックスと同じ値の形状のアレイを計算する

indexes = np.array([[0,0,0,0,0],[1,2,1,2,1]]) 

#--------------------------------------------------------------------- 
# indexes : [[0, 0, 0, 0, 0], 
#     [1, 2, 1, 2, 1]]) 

。 これは私のコードです:

result = np.zeros(indexes.shape) 

for i in range(0, indexes.shape[0]): 
    result[i, :] = my_array[indexes[i, :], np.arange(0, indexes.shape[1])] 

#--------------------------------------------------------------------- 
# Result : [[ 0., 1., 0., 1., 0.], 
#    [ 1., 5., 1., 3., 1.]] 

はそれを行うために、より「神託の方法は、」ありますか?

答えて

3

使用advanced-indexing -

my_array[indexes, np.arange(indexes.shape[-1])] 

指標indexesのリストとインデックスが列ごとに1つを選択する場合は、使用 -

my_array[indexes, np.arange(len(indexes))] 
関連する問題