我正在尝试对 numpy
数组中的值进行排序,以便我可以存储特定范围内的所有值(这可能用词更好)。无论如何,我会举例说明我正在尝试做的事情。我有一个名为 bins 的数组,如下所示:
bins = array([11,11.5,12,12.5,13,13.5,14])
我还有另一个名为 avgs 的数组:
avgs = array([11.02, 13.67, 11.78, 12.34, 13.24, 12.98, 11.3, 12.56, 13.95, 13.56,
11.64, 12.45, 13.23, 13.64, 12.46, 11.01, 11.87, 12.34, 13,87, 13.04,
12.49, 12.5])
我想要做的是找到 avgs
数组的索引值,这些索引值在 bins
数组的值之间的范围内。例如,我试图制作一个 while 循环,为每个 bin 创建新变量。第一个 bin 是 bins[0] 和 bins[1]
之间的所有内容,看起来像:
bin1 = array([0, 6, 15])
这些索引值将对应于 avgs
中的值 11.02、11.3 和 11.01,并且将是 avgs
中索引值 0 和 1 之间的值垃圾箱
。我还需要其他垃圾箱,所以另一个例子是:
bin2 = array([2, 10, 16])
然而,这对我来说具有挑战性的部分是 bins
和 avgs
的大小会根据其他参数发生变化,因此我试图构建一些能够扩展到更大或更小的 bins
和 avgs
数组。
最佳答案
Numpy 有一些非常强大的 bin 计数函数。
>>> binplace = np.digitize(avgs, bins) #Returns which bin an average belongs
>>> binplace
array([1, 6, 2, 3, 5, 4, 1, 4, 6, 6, 2, 3, 5, 6, 3, 1, 2, 3, 5, 7, 5, 3, 4])
>>> np.where(binplace == 1)
(array([ 0, 6, 15]),)
>>> np.where(binplace == 2)
(array([ 2, 10, 16]),)
>>> avgs[np.where(binplace == 1)]
array([ 11.02, 11.3 , 11.01])
关于python - 如何将 numpy 数组中的值组织到包含特定范围值的容器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17413624/