我想在三个数组上使用 numpy 进行多维数组操作,其中一个是索引数组,例如:
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的第二维的第二个元素(例如 [4 5 6 7]),&& 是与b的第一维的第i个项目相关的第二维的第一个元素(例如 [0 1 2 3]) ,其中i来自数组c (例如 c[0]=0 表示数组b的第一维的第一个元素)。d与 a具有相同的维度。
编辑:上面例子的答案是:
# d = [[0 6 14 24] [16 26 38 52] [104 126 150 176] [152 178 206 236] [336 374 414 456]]
谢谢