python - 如何在 Python 中向量化增量

标签 python numpy vectorization

我有一个二维数组,我有一些数字要添加到一些单元格中。我想对操作进行矢量化以节省时间。问题是当我需要将多个数字添加到同一个单元格时。在这种情况下,矢量化代码只添加最后一个。 “a”是我的数组,“x”和“y”是我要递增的单元格的坐标,“z”包含我要添加的数字。

import numpy as np

a=np.zeros((4,4))
x=[1,2,1]
y=[0,1,0]
z=[2,3,1]
a[x,y]+=z
print(a)

如您所见,a[1,0] 应该递增两次:一次递增 2,一次递增 1。因此预期的数组应该是:

[[0. 0. 0. 0.]
 [3. 0. 0. 0.]
 [0. 3. 0. 0.]
 [0. 0. 0. 0.]]

但我得到:

[[0. 0. 0. 0.]
 [1. 0. 0. 0.]
 [0. 3. 0. 0.]
 [0. 0. 0. 0.]]

这个问题用 for 循环很容易解决,但我想知道我是否可以正确地向量化这个操作。

最佳答案

使用np.add.at为此:

import numpy as np

a = np.zeros((4,4))
x = [1, 2, 1]
y = [0, 1, 0]
z = [2, 3, 1]
np.add.at(a, (x, y), z)
print(a)
# [[0. 0. 0. 0.]
#  [3. 0. 0. 0.]
#  [0. 3. 0. 0.]
#  [0. 0. 0. 0.]]

关于python - 如何在 Python 中向量化增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57373474/

相关文章:

python - 如何找到 while 循环执行了多少次?

python - 使用 Praw 抓取 subreddit 帖子标题并将其用作文件名

python - Numpy Matrix 不断给我一个错误,

python - 在多处理中使用队列返回值的替代方法

r - 根据向量给出的 ID 从矩阵中提取多行

r - 矢量化模拟

python - Openpyxl:写入不同格式的单元格

python - 在单独的线程中运行 SimpleXMLRPCServer 并关闭

python - Pandas :如何找到每行最频繁的值?

python - 映射对角线