2016-11-04 11 views
1

私は次のような形状の配列を持っているnumpyの高度なインデックス

私は

scalar[i,j] = voxel_grids[i, indices[i, 0, j], indices[i, 1, j], indices[i,2,j]] 

はこの使用numpyのを行うための簡単な方法がありますscalar (128, 1024)ような配列を作成したい

voxel_grids : (128, 32, 32, 32) 
indices : (128, 3, 1024) 

(高度)インデックス?

答えて

1

あなたはこのような何かを行うことができます -

m = voxel_grids.shape[0] 
out = voxel_grids[np.arange(m)[:,None],indices[:,0],indices[:,1],indices[:,2]] 

他の方法は、三つの変数にindicesから3つのスライスを抽出し、インデックス作成のためにそれらを使用することです。これは以前のものよりも効率的ではないかもしれませんが、少し目が簡単かもしれません。下に表示されます -

m = voxel_grids.shape[0] 
x,y,z = indices.swapaxes(0,1) 
out = voxel_grids[np.arange(m)[:,None],x,y,z] 
関連する問題