gpt4 book ai didi

python - Numpy 中的向量化赋值

转载 作者:太空狗 更新时间:2023-10-29 20:17:55 25 4
gpt4 key购买 nike

假设我有一个大型 2D numpy 数组,例如1000x1000 元素。我还有两个长度为 L 的一维整数数组和一个相同长度的浮点一维数组。如果我想简单地根据整数数组将 float 分配到原始数组中的不同位置,我可以这样写:

mat = np.zeros((1000,1000))
int1 = np.random.randint(0,999,size=(50000,))
int2 = np.random.randint(0,999,size=(50000,))
f = np.random.rand(50000)
mat[int1,int2] = f

但如果发生碰撞,即多个 float 对应于一个位置,则除最后一个之外的所有 float 都将被覆盖。有没有办法以某种方式聚合所有碰撞,例如落在同一位置的所有花车的平均值或中位数?我想利用矢量化并希望避免解释器循环。

谢谢!

最佳答案

根据 hpaulj 的建议,以下是在发生碰撞时获取平均值的方法:

import numpy as np

mat = np.zeros((2,2))
int1 = np.zeros(2, dtype=int)
int2 = np.zeros(2, dtype=int)
f = np.array([0,1])

np.add.at(mat, [int1, int2], f)
n = np.zeros((2,2))
np.add.at(n, [int1, int2], 1)
mat[int1, int2] /= n[int1, int2]
print(mat)

array([[0.5, 0. ],
[0. , 0. ]])

关于python - Numpy 中的向量化赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51092737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com