私は3D numpy配列のスライスを行う最も効率的な方法を探しています。これはデータのサブセットで、テスト目的のみのものです。3dアレイ上で効率的なナンシースライス
in_arr =np.array([[[0,1,2,5],[2,3,2,6],[0,1,3,2]],[[1,2,3,4],[3,1,0,5],[2,4,0,1]]])
indx =[[3,1,2],[2,0,1]]
indxで値を取得する必要があります。たとえば、indx [0] [0]は3なので、in_arr [0] [0]の3番目の要素、この場合は5を探しています。
私は次のコードを持っています。それが必要ですが、時間複雑度はn^2です。これは私が喜んでいません。
list_in =[]
for x in range(len(indx)):
arr2 = []
for y in range(len(indx[x])):
arr2.append(in_arr[x][y][indx[x][y]])
#print in_arr[x][y][indx[x][y]]
list_in.append(arr2)
print list_in
大規模なデータセットに対して同じタスクを実行するための非常に高速で効率的な方法を探しています。
[Indexing docs](https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html)実際の回答については、少し例を改善してください。例えば。タスクの完全な期待出力を追加します。 – sascha