生成多维numpy数组以查找两个值之间的和Python



下面的函数表示求和Numbers[:,0]在极限limit1-3的两个连续元素之间的所有第二行值。对于第一次计算,如果数字中没有值在0和2之间(limit1的前两个元素),那么结果是0。对于第二次计算,Numbers[:,0]中的3,4位于limit1中的2-5之间,因此Numbers的第二列求和1+3 =4得到4。我怎样才能把它实现到下面的函数呢?

def formating(a, b, c):

# Formating goes here
x = np.sort(c);
# digitize
l = np.digitize(a, x)
# output:
result = np.bincount(l, weights=b)
return result[1:len(b)]
Numbers = np.array([[3,1], [4,3], [5,3], [7,11], [8,9], [10,20] , [20, 45]])
limit1 = np.array([0, 2 , 5, 12, 15])
limit2 = np.array([0, 2 , 5, 12])
limit3 = np.array([0, 2 , 5, 12, 15, 22])
result1= formating(Numbers[:,0], Numbers[:,1], limit1)
result2= formating(Numbers[:,0], Numbers[:,1], limit2)
result3= formating(Numbers[:,0], Numbers[:,1], limit3)

预期输出

result1:  [ 0.  4. 43.  0. ] 
result2:  [ 0.  4. 43. ] 
result3:  [ 0.  4. 43.  0. 45.]

电流输出

result1:  [ 0.  4. 43.  0. 45.] 
result2:  [ 0.  4. 43. 45.] 
result3:  [ 0.  4. 43.  0. 45.]

This:

return result[1:len(b)]

应该

return result[1:len(c)]

返回向量取决于箱子的长度,而不是输入数据。

相关内容

  • 没有找到相关文章

最新更新