如何有效地将numpy值转换为范围索引数组

时间:2014-06-27 11:32:42

标签: python numpy

我正在尝试找出一种有效的方法来获取一系列浮动值并将它们转换为与特定范围相关联的索引。

例如n个浮点数x浮点数[-999.99,43.000,-56.00 ....](这个数组实际上非常大,通常从6000到25000个值。

范围信息实际上包括一个小得多的约3到20行(y)的范围起始值(按升序排列)。例如[-9999.0,0.0,0.0,500.0 99999.0]。可以重复一个值,如0.0所示。

然后用它来构建一组范围,使得范围的开始= [:yrows - 2]和end = [1:yrows -1] 这样得到一系列范围[(-9999.0,0.0),(0.0,0.0),(0.0,500.0),(500.0,99999.0),总行数为-1(然后可以生成一个索引)对应每一行

我需要得到的是等于原始x浮点值所在的y行的索引(每个浮点数只有一个)。然后,我将使用索引来获取与该特定范围相关的更多信息。

例如[-999.99,43.000,-56.00 ....]的索引会产生索引值[0,2,0 ...] 请注意,为清楚起见,x值不以任何方式排序,但始终大于最小阵列范围值且小于最高阵列范围值。

索引将起作用,使得所需的索引是x> =范围开始且小于范围结束的索引,因此上面的(0.0,0.0)条目是一个永远不会被挑选的范围并且是否创建新的结束/仅启动上一个,下一个范围的属性。

好的,这已经解决了。 numpy.digitize正是我所需要的,例如numpy.digitize(xfloatarray,ybins,right = False)。

我只是没有碰到这个功能,并且在发布之后无法谷歌查找该功能...我只是不断获得有关拆分数组或创建索引的结果。

1 个答案:

答案 0 :(得分:1)

好的,这已经解决了。 numpy.digitize正是我所需要的,例如。

numpy.digitize(xfloatarray, ybins, right=False)

其中xfloatarray是我的浮动数组[ -999.99, 433.000, -56.00....]

ybins是我的范围值数组[-9999.0, 0.0, 0.0, 500.0 99999.0]

结果为[1,3,1..]

如果在xfloatarray中使用值0.0,则返回值3,即不返回值2。

相关问题