python - 映射具有重复索引的数组?

标签 python matrix numpy scipy slice

假设 numpy 中有三个数组:

a = np.zeros(5)
b = np.array([3,3,3,0,0])
c = np.array([1,5,10,50,100])

b 现在可以用作 a 和 c 的索引。例如:

   In [142]: c[b]
   Out[142]: array([50, 50, 50,  1,  1])

有没有办法通过这种切片将连接到重复索引的值相加?与

a[b] = c

仅存储最后的值:

 array([ 100.,    0.,    0.,   10.,    0.])

我想要这样的东西:

a[b] += c

这会给出

 array([ 150.,    0.,    0.,   16.,    0.])

我正在将非常大的向量映射到二维矩阵上,并且真的希望避免循环......

最佳答案

NumPy 数组的 += 运算符根本无法按照您希望的方式工作,而且我不知道如何让它以这种方式工作。作为解决方法,我建议使用 numpy.bincount() :

>>> numpy.bincount(b, c)
array([ 150.,    0.,    0.,   16.])

只需根据需要添加零即可。

关于python - 映射具有重复索引的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282149/

相关文章:

python - 高效地将 CSV 的最后 'n' 行读入 DataFrame

python - NaiveBayes 和 LogistcRegression 之间令人困惑的结果

python - 在本地安装 jupyter 后,我无法运行 jupyter notebook

numpy - 不同形状的 NumPy 数组的逐元素乘法

Matlab:创建 3D 立方体 RGB 并显示它

python-3.x - 简化 numpy 表达式

python - 在 flask (flask.g) 中使用全局变量

python - 搜索包含回车符和换行符的子字符串

c - MPI_Scatter and Gather - 二维数组,不均匀 block

python - 如何逐个元素地查找哪个 numpy 数组包含最大值?