使用 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
的一种方法。请注意,您的 x
和 l
搞砸了,我记得您 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.])
有没有一种方法可以修改下面的函数,以便它可以计算具有不同长度大小的数组。 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
的一种方法。请注意,您的 x
和 l
搞砸了,我记得您 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.])