Python 在使用'numpy.digitalize'分割一个numpy数组后,如何计算每个bin的平均值?
我有一个输入数组,它被拆分为多个存储箱,我想计算这些存储箱的平均值。让我们假设以下示例:Python 在使用'numpy.digitalize'分割一个numpy数组后,如何计算每个bin的平均值?,python,arrays,numpy,scipy,scientific-computing,Python,Arrays,Numpy,Scipy,Scientific Computing,我有一个输入数组,它被拆分为多个存储箱,我想计算这些存储箱的平均值。让我们假设以下示例: >>> import numpy as np >>> a = np.array([1.4, 2.6, 0.7, 1.1]) 通过以下方式将其拆分为垃圾箱: 这正是我所期望的,正如您在这里更明确地看到的: >>> for i in range(len(bins)): ... f"bin where {i} <= x < {i + 1}
>>> import numpy as np
>>> a = np.array([1.4, 2.6, 0.7, 1.1])
通过以下方式将其拆分为垃圾箱:
这正是我所期望的,正如您在这里更明确地看到的:
>>> for i in range(len(bins)):
... f"bin where {i} <= x < {i + 1} contains {a[indices == i + 1]}"
...
'bin where 0 <= x < 1 contains [0.7]'
'bin where 1 <= x < 2 contains [1.4 1.1]'
'bin where 2 <= x < 3 contains [2.6]'
但是使用for
循环执行此操作既不优雅(pythonic),也不高效,因为之后必须使用np.array
将列表转换为NumPy数组
什么是NumPy方法?NumPy方法是NumPy.mean()作为函数,这是
bincount
:
np.bincount(indices-1,a)/np.bincount(indices-1)
输出:
array([0.7, 1.25, 2.6])
np.bincount(indices-1,a)/np.bincount(indices-1)
array([0.7, 1.25, 2.6])