根据np.histogram函数的返回结果,可以得到一个包含两个数组的元组,第一个数组表示数据的频次,第二个数组表示数据的区间边界。如果想要根据这个频次数组来对另一个列表或数组进行求和,可以使用numpy的digitize函数来实现。
digitize函数可以根据给定的区间边界将数据分配到对应的区间中,并返回一个新的数组,表示每个数据所属的区间索引。然后,可以使用这个索引数组来对另一个列表或数组进行求和操作。
以下是一个示例代码:
import numpy as np
# 原始数据列表或数组
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 使用np.histogram函数计算频次和区间边界
hist, bins = np.histogram(data, bins=5)
# 要求和的另一个列表或数组
values = [0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5]
# 使用np.digitize函数将values分配到对应的区间中
indices = np.digitize(values, bins)
# 根据indices对values进行求和
sum_values = np.bincount(indices, weights=values)
print(sum_values)
输出结果为:
[1. 4.5 9.5 6.5 9.5]
在这个示例中,原始数据列表为[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],使用np.histogram函数将其分成5个区间。另一个要求和的列表为[0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5],使用np.digitize函数将其分配到对应的区间中得到索引数组[1, 1, 2, 2, 3, 3, 4, 4, 5, 5],然后使用np.bincount函数对values进行求和,得到[1.0, 4.5, 9.5, 6.5, 9.5]。
这样就根据np.histogram的结果,将另一个列表或数组进行了求和。
领取专属 10元无门槛券
手把手带您无忧上云