3 つの配列に対して numpy を使用して多次元配列操作を実行したいのですが、そのうちの 1 つはインデックス配列です。
a = numpy.arange(20).reshape((5, 4))
# a = [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15] [16 17 18 19]]
b = numpy.arange(24).reshape(((3, 2, 4)))
# b = [[[ 0 1 2 3] [ 4 5 6 7]] [[ 8 9 10 11] [12 13 14 15]] [[16 17 18 19] [20 21 22 23]]]
c = numpy.array([0,0,1,1,2])
# c = [0 0 1 1 2]
今、私が欲しいのは:
d = a * b[&] + b[&&]
& はbの 2 番目の次元の 2 番目の要素(例: [ 4 5 6 7]) で、 && は 2 番目の次元の最初の要素 (例: [ 0 1 2 3])で、 bの最初の次元のi番目の項目に関連しています。ここで、iは配列cからのものです (たとえば、配列bの最初の次元の最初の要素の c[0]=0 )。dはaと同じ次元です。
編集:上記の例の答えは次のとおりです。
# d = [[0 6 14 24] [16 26 38 52] [104 126 150 176] [152 178 206 236] [336 374 414 456]]
ありがとう