Python 将numpy数组保存为图像时出现的问题

Python 将numpy数组保存为图像时出现的问题,python,matplotlib,plot,Python,Matplotlib,Plot,我无法将numpy二维数组保存为图像(灰度)。我读了这个问题,但仍然不明白下面的代码出了什么问题 plt.imsave("image.eps", np.flipud(arr), cmap = "gray_r", format = "eps", dpi = 1000) 执行后image.eps是空白的,我不明白为什么。我还尝试将其作为AxeImage对象处理(见下文),但没有成功 img = plt.imshow(np.flipud(arr)) plt.savefig("image.eps",

我无法将numpy二维数组保存为图像(灰度)。我读了这个问题,但仍然不明白下面的代码出了什么问题

plt.imsave("image.eps", np.flipud(arr), cmap = "gray_r", format = "eps", dpi = 1000)
执行后image.eps是空白的,我不明白为什么。我还尝试将其作为AxeImage对象处理(见下文),但没有成功

img = plt.imshow(np.flipud(arr))
plt.savefig("image.eps", format = "eps", dpi = 1000)
请解释一下这个代码有什么问题

事实上,我对Python(以及matplotlib)还不熟悉,所以我对Python的很多概念都不熟悉

更新: 我尝试了以下代码,但image.eps仍然为空

import matplotlib.pyplot as plt
import numpy as np

arr = np.array([[1, 0.5],[0.5, 0]])

plt.imsave("image.eps", np.flipud(arr), cmap = "gray_r", format = "eps", dpi = 1000)
另一方面,如果我打电话

img = plt.imshow(arr)
然后我可以在控制台(Spyder)中看到正确的图片(一个黑色、一个白色和两个灰色方块)


也许有办法使用img变量保存图片?

我已经在解释器中测试了
imsave

In [39]: import numpy as np 
    ...: import matplotlib.pyplot as plt                                                  

In [40]: a = np.random.random((500,500))                                                  

In [41]: plt.imsave('a1000.eps', a, dpi=1000)                                             

In [42]: plt.imsave('a0500.eps', a, dpi=500)                                              

In [43]:                                                                                  
Do you really want to exit ([y]/n)? 
22:07 boffi@debian:~ $ ll a1000.eps a0500.eps 
-rw-r--r-- 1 boffi boffi 1512480 Nov 22 22:07 a0500.eps
-rw-r--r-- 1 boffi boffi 1512480 Nov 22 22:07 a1000.eps
如您所见,这两个文件的大小相同,是相同还是不同

22:08 boffi@debian:~ $ diff a1000.eps a0500.eps 
2c2
< %%Title: a1000.eps
---
> %%Title: a0500.eps
4c4
< %%CreationDate: Fri Nov 22 22:07:30 2019
---
> %%CreationDate: Fri Nov 22 22:07:42 2019
6c6
< %%BoundingBox: 288.0 378.0 324.0 414.0
---
> %%BoundingBox: 270.0 360.0 342.0 432.0
31,32c31,32
< 288 378 translate
< 36 36 0 0 clipbox
---
> 270 360 translate
> 72 72 0 0 clipbox
37c37
< 36.0 36.0 scale
---
> 72.0 72.0 scale
最后,我们有一个问题,您的图像是空白的。我的不是。请注意,较大的图像是具有较小的
dpi
的图像,这与您认为增加
dpi
可以获得较大的图像相反


您可以包括您正在使用的阵列吗?或者至少是它的一个子集?使用
arr=np.arange(10000).重塑(100100)
,您的
imsave
语法有效(尽管图像只有1英寸宽)。所以你需要更具体一点,我想一个主要的问题是eps和其他矢量格式一样,并没有定义dpi。如果72的标准“dpi”与设置的dpi(这里是1000)完全不同,这可能会有一些奇怪的含义。是的,事实上,没有设置dpi的代码是有效的。但是,相应的图片太小(即使对于我使用的矩阵500乘以500)。有可能把图片放大吗?
dpi : int
      The DPI to store in the metadata of the file.  This does not affect the
      resolution of the output image.