【问题标题】:Increment Numpy multi-d array with repeated indices使用重复索引递增 Numpy 多维数组
【发布时间】:2011-11-17 23:43:52
【问题描述】:

我对@9​​87654321@的多维案例很感兴趣。

我有一个 N 维数组和一组 N 个索引数组,我想增加谁的值。索引数组可能有重复的条目。

没有重复,解决方案是

a = arange(24).reshape(2,3,4)
i = array([0,0,1])
j = array([0,1,1])
k = array([0,0,3])
a[i,j,k] += 1

对于重复,(例如 j=array([0,0,2]) ),我无法让 numpy 增加重复次数。

【问题讨论】:

    标签: python arrays indexing numpy


    【解决方案1】:

    这个怎么样:

    import numpy as np
    a = np.zeros((2,3,4))
    i = np.array([0,0,1])
    j = np.array([0,0,1])
    k = np.array([0,0,3])
    
    ijk = np.vstack((i,j,k)).T
    H,edge = np.histogramdd(ijk,bins=a.shape)
    a += H  
    

    【讨论】:

    • 我将它与立方箱一起使用,并为 i、j 和 k 展平相同大小的立方体。知道为什么它开始在大于 27x27x27 的数组上崩溃吗?
    【解决方案2】:

    我不知道直接数组索引是否有更简单的解决方案,但这可行:

    for x,y,z in zip(i,j,k):
        a[x,y,z] +=1
    

    【讨论】:

      猜你喜欢
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      相关资源
      最近更新 更多