使用 2 个不同长度的数组 Numpy Python

Working with 2 arrays with different lengths Numpy Python

有没有一种方法可以修改下面的函数,以便它可以计算具有不同长度大小的数组。 Numbers 数组的长度为 7,Formating 的长度为 5。下面的代码比较 Formating 中的任何数字是否介于两个值之间,如果是,则求和介于两者之间的值。因此对于第一次计算,由于 Numbers 中没有元素位于 0, 2 之间,结果将为 0。Link 代码源自:.

代码:

Numbers = np.array([3, 4, 5, 7, 8, 10,20])
Formating = np.array([0, 2 , 5, 12, 15])
x = np.sort(Numbers);
l = np.searchsorted(x, Formating, side='left')
mask=(Formating[:-1,None]<=Numbers)&(Numbers<Formating[1:,None])
N=Numbers[:,None].repeat(5,1).T
result= np.ma.masked_array(N,~mask)
result = result.filled(0)
result = np.sum(result, axis=1)

预期输出:

[ 0  7 30  0]

这是 bincounts 的一种方法。请注意,您的 xl 搞砸了,我记得您 could/should 使用 digitize:

# Formating goes here
x = np.sort(Formating);

# digitize
l = np.digitize(Numbers, x)

# output:
np.bincount(l, weights=Numbers)

输出:

array([ 0.,  0.,  7., 30.,  0., 20.])