根据另一个 numpy 数组的 bin 求和

Nat*_*mas 5 arrays histogram python-3.x

我有代表多个数据点高度的值,例如:

arr = np.array([1.0,1.2,1.6,2.3,2.2,2.6,2.8,2.2,3.7,3.3......7.1,7.7,7.3,7.9,7.5,7.3,8.2,9.9,9.3,9.5,10.0,10.2])
Run Code Online (Sandbox Code Playgroud)

与这些相关的是它们区域的另一个数组:

arr2 = np.array([50,30,25,21,36,87,54,34,67,43,21,45,......25,46,78,42])
Run Code Online (Sandbox Code Playgroud)

arr 和 arr2 具有相同的形状。

我可以使用以下方法从 arr 获取直方图:

np.hist(arr,bins=11,range=(0,11)) 
Run Code Online (Sandbox Code Playgroud)

这给了我每个 bin 的计数,但我想要的是每个 bin 的总面积(来自 arr2)。

例如,对于高度 >=1 和 <2,我想要总面积,在本例中为:

50+30+25 = 105
Run Code Online (Sandbox Code Playgroud)

是否有一个函数或Pythonic方法可以从arr2中获取属于arr创建的垃圾箱中的总数?

Nat*_*mas 3

我通过使用 numpy.histogram 实现了这一点。使用权重允许我根据 arr 的 bin 对 arr2 中的值求和,如文档中所示: https: //docs.scipy.org/doc/numpy/reference/ generated/numpy.histogram.html

所以我的新代码是:

n, bins = numpy.histogram(arr, bins=100, range=(0,100), weights=arr2)
Run Code Online (Sandbox Code Playgroud)