python - MemoryError 与 numpy arange

标签 python numpy matplotlib out-of-memory

我想创建一个 10 的幂数组作为绘图 y 轴的标签。 我正在使用 plt.yticks() 并将 matplotlib 导入为 plt,但这在这里并不重要。 我有一些图,其中 y 轴从 1e3 到 1e15 不等。这些是对数图。 Matplotlib 会自动显示带有 1e2 步长刻度的刻度线,而我希望步长为 10(以便能够正确使用小刻度线)。

我想使用 plt.yticks(numpy.arange(1e3, 1e15, 10)) 命令,但是 numpy.arange(1e3, 1e15, 10) 导致内存错误。它不是应该输出一个长度为 13 的数组吗?为什么内存变满了?

如何绕过这个问题而不是手动构建数组?

我也尝试过使用内置的 range 但它不适用于 float 。

谢谢。

最佳答案

尝试使用 NumPy 中的 logspace 作为

plt.yticks(numpy.logspace(3, 15, 13))

在这里您给出起始和最后的指数(10 的幂)以及它们之间的数据点数。如果你打印上面的网格,你会得到以下内容

array([1.e+03, 1.e+04, 1.e+05, 1.e+06, 1.e+07, 1.e+08, 1.e+09, 1.e+10,
   1.e+11, 1.e+12, 1.e+13, 1.e+14, 1.e+15])

关于python - MemoryError 与 numpy arange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52383129/

相关文章:

python - 给定一组 3D 点及其相应温度的数组,如何绘制横截面的等高线图?

python - Qt ShortcutOverride 默认 Action

python - 使用 numpy 中的数组优化操作

python - 如何 reshape Pandas DataFrame 以显示列中的某些值是否每天存在?

python - 使用opencv从一张图片中裁剪多张人脸并将它们存储在一个文件夹中

python - 如何在 python 中使用 matplotlib/basemap 在正交投影上标记平行线/子午线

python - 无法使用 yapf(谷歌的 python 格式化程序)设置/使用旋钮

python - 在 Tkinter 中使用 root.after 和 root.mainloop 的正确方法

python - 在 Windows 机器上帮助 subprocess.call

python - pyplot TwoSlopeNorm LinearSegmentedColormap 中零值的唯一颜色