python - 使用另一个数组中的 ID 对一个数组执行基于 ID 的平均 - NumPy

标签 python arrays numpy

我有两个 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.meannp.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/

相关文章:

python - 一次性对分段函数进行多次 curve_fit 迭代

python - resource 可选参数,用于检索 Flask Restful 上的所有数据

python - 在 Windows Server 2003 上使用 python key 环时出现错误 1312

javascript - 如何在不使用 EVAL 的情况下处理两个数组对象

c++ - 从数组的类型中查找元素的类型

python - Pandas 数据框中点坐标的欧几里得距离

arrays - 如何在 NumPy 中将 HDF5 二维数组转换为一维数组?

python - 运行目录中的文件会创建一个额外的 nan 数组

python - 检查大量 numpy 矩阵中的三角不等式

c++ - new (float*)[] 和 new float*[] 的区别