Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy直方图,如何获取每个箱子中的最大值_Python_Numpy_Histogram - Fatal编程技术网

Python Numpy直方图,如何获取每个箱子中的最大值

Python Numpy直方图,如何获取每个箱子中的最大值,python,numpy,histogram,Python,Numpy,Histogram,我有一系列的数字,我与上面的代码。是否可以返回每个箱子中的最大数量 请查看示例代码: from numpy import * a=array([1,4,5,6,7.8,9,3.4,5.,6,3.5,6,8,9,10]) bins=arange(0,11,1) h=hist(a,bins=bins) h=hist(a,bins=bins,weights=a) 这就是回报 (array([ 0. , 1. , 0. , 6.9, 4. , 10

我有一系列的数字,我与上面的代码。是否可以返回每个箱子中的最大数量

请查看示例代码:

  from numpy import *


  a=array([1,4,5,6,7.8,9,3.4,5.,6,3.5,6,8,9,10])

  bins=arange(0,11,1)

  h=hist(a,bins=bins)

  h=hist(a,bins=bins,weights=a)
这就是回报

  (array([  0. ,   1. ,   0. ,   6.9,   4. ,  10. ,  18. ,   7.8,   8. ,  28. ]), array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

我想知道是否有可能在第四个存储箱中获得3.5(3和4之间的最大值),而不是6.9。

这将为您提供存储箱中每个元素的最大值,如果存储箱中没有元素,则
0

print [max(a[(a>=(i))&(a<i+1)]) if a[(a>=(i))&(a<i+1)].size else 0 for i in bins]
[0, 1.0, 0, 3.5, 4.0, 5.0, 6.0, 7.7999999999999998, 8.0, 9.0, 10.0]
print[max(a[(a>=(i))&(a=(i))&(a您可以使用。请注意,它将小于第一个存储箱的值标记为0

a[np.digitize(a,bins) == 4].max()
屏蔽数组在这里很有用:

import numpy.ma as ma
a2 = ma.empty((len(bins),len(a)))
a2.data[...] = a
a2.mask = np.digitize(a,bins)-1 != bins[:,np.newaxis]
a2.max(axis=1).filled(np.nan)

array([  nan,   1. ,   nan,   3.5,   4. ,   5. ,   6. ,   7.8,   8. ,
         9. ,  10. ])

谢谢,这很有用,但我想以直方图函数的方式返回数组。此外,是否可以对二维直方图进行扩展?@Matteo扩展了计算数组的答案。不幸的是,这只适用于1D。谢谢,这正是我想要的。在二维中进行扩展容易吗?@Matteo-应该可以。我想这取决于nds正是您的意思。在最简单的情况下,您只需展平阵列,然后执行上述操作。