sTr*_*gin 9 python arrays numpy bins
我正在尝试对numpy数组中的值进行排序,以便我可以存储某个范围内的所有值(这可能会更好地表达).无论如何生病了我想要做的一个例子.我有一个名为bin的数组,如下所示:
bins = array([11,11.5,12,12.5,13,13.5,14])
Run Code Online (Sandbox Code Playgroud)
我还有另一个名为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])
Run Code Online (Sandbox Code Playgroud)
我想要做的是找到avgs数组的值的索引值bins.例如,我试图创建一个while循环,为每个bin创建新的变量.第一个bin将是介于两者之间的所有东西,bins[0] and bins[1]看起来像:
bin1 = array([0, 6, 15])
Run Code Online (Sandbox Code Playgroud)
那些指数值将对应于值11.02,11.3和11.01,avgs并且将是avgs指数值0和1之间的值bins.我还需要其他箱子,所以另一个例子是:
bin2 = array([2, 10, 16])
Run Code Online (Sandbox Code Playgroud)
然而这对我来说是挑战性的部分是,大小bins和avgs基于其他参数,所以我试图建立自己的东西,将能够改变将扩大到更大或更小bins和avgs阵列.
Dan*_*iel 11
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])
Run Code Online (Sandbox Code Playgroud)