Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.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.where在遇到第一个true后停止_Python_Numpy_Optimization - Fatal编程技术网

Python 使Numpy.where在遇到第一个true后停止

Python 使Numpy.where在遇到第一个true后停止,python,numpy,optimization,Python,Numpy,Optimization,我正在尝试按输入大小放大一段代码,瓶颈似乎是调用numpy。其中我只使用了第一个真正的索引: indexs = [numpy.where(_<cump)[0][0] for _ in numpy.random.rand(sample_size)] indexs=[numpy.其中(如果cump是一个累积密度函数,那么它是单调的,因此进行排序。与其线性扫描,不如通过二进制搜索来获得最佳性能保证 首先,我们创建一些假数据进行搜索: >>> import numpy as n

我正在尝试按输入大小放大一段代码,瓶颈似乎是调用
numpy。其中
我只使用了第一个真正的索引:

indexs = [numpy.where(_<cump)[0][0] for _ in numpy.random.rand(sample_size)]

indexs=[numpy.其中(如果
cump
是一个累积密度函数,那么它是单调的,因此进行排序。与其线性扫描,不如通过二进制搜索来获得最佳性能保证

首先,我们创建一些假数据进行搜索:

>>> import numpy as np
>>> cump = np.cumsum(np.random.rand(11))
>>> cump -= cump[0]
>>> cump /= cump[-1]
>>> cump
array([ 0.        ,  0.07570573,  0.1417473 ,  0.30536346,  0.36277835,
        0.47102093,  0.54456142,  0.6859625 ,  0.75270741,  0.84691162,  1.
   ])
然后我们创建一些假数据来搜索:

>>> sample = np.random.rand(5)
>>> sample
array([ 0.19597276,  0.37885803,  0.2096784 ,  0.57559965,  0.72175056])
我们终于找到了它(找到了!):

>>[np.where(>>np.搜索排序(cump,样本)
数组([3,5,3,7,8],dtype=int64)

你是在抱怨
哪里停得太快,还是停得不够快?你的标题听起来像前者。@hpaulj:我是
在抱怨
numpy。哪里停得不够快。确实,这个标题有误导性,谢谢你指出,现在更新!非常感谢这很好,不是现在吗t
searchsorted
,这里绝对相关!!
>>> [np.where(_ < cump)[0][0] for _ in sample]
[3, 5, 3, 7, 8]
>>> np.searchsorted(cump, sample)
array([3, 5, 3, 7, 8], dtype=int64)