Python 批量将数据保存到图像:需要加速

Python 批量将数据保存到图像:需要加速,python,numpy,matplotlib,Python,Numpy,Matplotlib,我需要将大量(比如一百万)图像保存到磁盘,从数据开始。 我可以使用matplotlib实现这一点,但过程很慢。 我分析了我的脚本,发现瓶颈是以下几行: ax=plt.轴(图[0,0,1,1]) 图clf() 我的数据在一个numpy.array形状为56 x 56的数组中 代码如下: import matplotlib as mpl mpl.use('Agg') import numpy as np import matplotlib.pyplot as plt for i in rang

我需要将大量(比如一百万)图像保存到磁盘,从数据开始。 我可以使用
matplotlib
实现这一点,但过程很慢。 我分析了我的脚本,发现瓶颈是以下几行:

  • ax=plt.轴(图[0,0,1,1])
  • 图clf()
我的数据在一个
numpy.array
形状为56 x 56的数组中

代码如下:

import matplotlib as mpl
mpl.use('Agg')
import numpy as np
import matplotlib.pyplot as plt

for i in range(num_events):
    image = create_camera_image(evts, i) # this gives me back the image in a numpy.array of shape 56 x 56

    fig = plt.figure(frameon=False)
    fig.set_size_inches(1, 1)
    ax = plt.Axes(fig, [0., 0., 1., 1.]) # most expensive line
    ax.set_axis_off()
    fig.add_axes(ax)
    ax.imshow(image, filternorm=90, interpolation='nearest', origin='lower', cmap='hot')
    fig.savefig('filename'+str(i)+'.png', dpi=224)
    fig.clf() # second most expensive line
有没有更有效的方法?
我相信matplotlib并不是最好的选择,但我不能使用其他库,如
pillow
opencv
来实现相同的结果。

一次创建图形、轴和图像,并且只使用新数据更新,而不是为每个图像创建它们,肯定会更有效

import matplotlib as mpl
mpl.use('Agg')
import numpy as np
import matplotlib.pyplot as plt

num_events = 10

def create_camera_image(i):
    return np.random.rand(56,56)

fig = plt.figure(figsize=(1,1),frameon=False)
ax = fig.add_axes([0,0,1,1])
ax.set_axis_off()

nullimage = np.zeros((56,56))
im = ax.imshow(nullimage, interpolation='nearest', origin='lower', 
               cmap='hot', vmin=0,vmax=1)

for i in range(num_events):
    image = create_camera_image(i)
    im.set_data(image)

    fig.savefig('filename'+str(i)+'.png', dpi=224)

它似乎不起作用。我只能以这种方式生成黑色图像,就好像
null图像
不会被
set\u data
很好地替换一样。此外,我有以前没有的围绕相机图像的白色区域。如果你复制粘贴上面的代码并运行它,你会得到黑色图像吗?这对我来说很好,你的代码也很好。我想问题出在数据上,因为你的
create\u camera\u image
返回一个(56,56,3)数组,而我的是一个(56,56)。我会接受你的答复。我正在调查。如果你有一个灰度图像,你需要标准化imshowplot。我更新了答案,使用了灰度图像。这是我从原始版本获得的图像:这是我现在得到的:非常好(不是相同的数据,但不相关),但正如你所看到的,我现在没有相机轮廓,也没有背景色。。