Python numpy数组的多个元素的加减

Python numpy数组的多个元素的加减,python,numpy,Python,Numpy,嗨,我有一个python代码: import numpy as np a = np.array([[1,2,3],[4,5,6],[7,8,9]]) b = a[0,1]+a[2,2]-a[1,1] >>> b >>> 6 有没有其他更快的方法来添加/减去数组中特定元素的列表?如果您只想从索引列表中检索数组中的值,并对其求和,可以执行以下操作: import numpy as np a = np.array([[1,2,3],[4,5,6

嗨,我有一个python代码:

import numpy as np     
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = a[0,1]+a[2,2]-a[1,1]
>>> b
>>> 6

有没有其他更快的方法来添加/减去数组中特定元素的列表?

如果您只想从索引列表中检索数组中的值,并对其求和,可以执行以下操作:

import numpy as np     
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = a[0,1]+a[2,2]-a[1,1]
>>> b
>>> 6
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
ind = [[0,1],[2,2],[1,1]]
values = a[zip(*ind)]
b = values.sum()
# b = 2+9+5 = 16
注意,我将索引
ind
设置为索引对列表,因此
zip
是必需的。显然,这可以通过多种方式实现
a[…]
只需要获得按轴分组的索引列表或元组(而不是numpy数组),即
a[(0,2,1)、(1,2,1)]

import numpy as np     
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = a[0,1]+a[2,2]-a[1,1]
>>> b
>>> 6
现在可以用多种方法进行任意的加减运算。例如:

import numpy as np     
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = a[0,1]+a[2,2]-a[1,1]
>>> b
>>> 6
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
ind = [[0,1],[2,2],[1,1]]   # indices in array
op = [1,1,-1]               # 1 for addition, -1 for subtraction
values = a[zip(*ind)]*op
b = values.sum()
# b = 2+9-5 = 6

最后一点:此方法对于任意大小的索引集(即代码的参数)非常有用。对于3个特定值,最好像在代码中那样显式执行。

看这里:我不确定我是否理解这个问题。有没有更快的方法将数组的两个特定元素添加到一起?否。是否有更快的方法将数组的多个元素添加到一起?对你能再解释一下你想做什么吗?问题还不清楚。如果您有一系列索引,您可以使用
numpy.sum
在多维数组上快速屏蔽和加法。@MrE:我需要将数组中的多个元素相加或相减,就像a[0,1]+a[2,2]-a[1,1]要获得一些值。@user2766019请将带有一系列索引的示例/示例数据添加到您的问题中,我们可以向您展示如何使用NumPy快速获得结果。
import numpy as np     
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = a[0,1]+a[2,2]-a[1,1]
>>> b
>>> 6