【问题标题】:Numpy array operation using another indices array使用另一个索引数组的 Numpy 数组操作
【发布时间】:2012-07-16 10:30:47
【问题描述】:

我想用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]),&& 是第二维的第一个元素(例如 [0 1 2 3]),与i - b 的第一个维度的第一项,其中 i 来自数组 c(例如 c[0 ]=0 表示数组 b 的第一个维度的第一个元素)。 da 具有相同的维度。

编辑:上述示例的答案是: # d = [[0 6 14 24] [16 26 38 52] [104 126 150 176] [152 178 206 236] [336 374 414 456]]

谢谢

【问题讨论】:

  • 维度太多^^。你能给我们d的结果供参考吗?谢谢。

标签: python multidimensional-array numpy


【解决方案1】:
>>> a * b[c,1,:] + b[c,0,:]
array([[  0,   6,  14,  24],
       [ 16,  26,  38,  52],
       [104, 126, 150, 176],
       [152, 178, 206, 236],
       [336, 374, 414, 456]])

【讨论】:

    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多