我有两个 numpy 数组
A= np.array([1,1,1,1,0,0,0,0,0,1])
B= np.array([2,2,2,2,32,1,12,124,1,2)
C= #mean of B's elements where A is 1
D= #mean of B's elements where A is 0
我该怎么做?我认为它是 np.mean
和 np.ma
的某种组合,但我不明白如何用掩码计算平均值?
最佳答案
您可以使用np.bincount
对于一般情况,您可能会在 A
中处理其他此类 ID/标签,如下所示 -
np.bincount(A,B)/np.bincount(A)
基本上,np.bincount(A,B)
为我们提供了 B
基于 ID 的求和,其中 ID 来自 A
。然后,我们将这些总和除以每组 ID 的计数,以获得每个 ID 组的平均值。
示例运行 -
In [12]: A
Out[12]: array([1, 1, 1, 1, 0, 0, 0, 0, 0, 1])
In [13]: B
Out[13]: array([ 2, 2, 2, 2, 32, 1, 12, 124, 1, 2])
In [14]: B[A==0].mean() # Using boolean indexing per ID and getting avg
Out[14]: 34.0
In [15]: B[A==1].mean()
Out[15]: 2.0
In [16]: np.bincount(A,B)/np.bincount(A)
Out[16]: array([ 34., 2.])
关于python - 使用另一个数组中的 ID 对一个数组执行基于 ID 的平均 - NumPy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40695179/