Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.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_Python 3.6 - Fatal编程技术网

Python 小数据集上的Numpy直方图速度非常慢

Python 小数据集上的Numpy直方图速度非常慢,python,numpy,python-3.6,Python,Numpy,Python 3.6,我在使用特定数据集的Numpy直方图时遇到问题 问题是我得到了非常慢的响应(几分钟)以及非常大的内存使用。我注意到的内存行为是一个12GB的峰值,然后下降到~750MB,然后又恢复到高GBs。这似乎在无休止地重复。即使我让它通过。这需要几分钟的时间,最后我遇到了一个内存错误 当传递一个(非常)小的数据集时,所有这些都会发生,例如下面的数据集(26个元素): 我假设部分放缓可能是由于达到了物理内存上限,然后受到交换时间的限制 直方图计算如下: histY, histX = np.histogram

我在使用特定数据集的Numpy直方图时遇到问题

问题是我得到了非常慢的响应(几分钟)以及非常大的内存使用。我注意到的内存行为是一个12GB的峰值,然后下降到~750MB,然后又恢复到高GBs。这似乎在无休止地重复。即使我让它通过。这需要几分钟的时间,最后我遇到了一个内存错误

当传递一个(非常)小的数据集时,所有这些都会发生,例如下面的数据集(26个元素):

我假设部分放缓可能是由于达到了物理内存上限,然后受到交换时间的限制

直方图计算如下:

histY, histX = np.histogram(vals, bins='auto')
其中“VAL”是上述Numpy数组中的示例值

*注意上述情况下2.0000000353764813e-11的最小最大裕度较小

我的快速猜测;直方图函数在进行一些迭代优化以找到此数据集的最佳仓位大小与仓位计数时遇到了问题,并且存在最小最大边距小的问题

最终结束时收到的错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".....\lib\site-packages\numpy\lib\histograms.py", line 737, in histogram
    n = np.zeros(n_equal_bins, ntype)
MemoryError
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“…\lib\site packages\numpy\lib\histograms.py”,第737行,在直方图中
n=np.零(n_等于n,ntype)
记忆者

有人能解释一下这里到底发生了什么,以及可以做些什么来避免这个问题吗?

我可以确认1.18.1上存在这个错误。你是否尝试过使用固定的箱子编号而不是“自动”来对比计时?@alan.elkin:使用固定数量的箱子,如3,它会立即完成。正如您所期望的那样,即使使用
自动
@JohnZwinck,也要感谢您的确认。我在numpy git上发现了以下bug报告:看起来像一个两年前的bug。看来我得用固定垃圾箱的方法了。
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".....\lib\site-packages\numpy\lib\histograms.py", line 737, in histogram
    n = np.zeros(n_equal_bins, ntype)
MemoryError