在python中将阵列显示为光栅图像

在python中将阵列显示为光栅图像,python,image,image-processing,numpy,Python,Image,Image Processing,Numpy,我有一个Python中的numpy数组,我想在屏幕上以光栅图像的形式显示它。最简单的方法是什么?它不需要特别花哨或者有一个很好的界面,我所需要做的就是将数组的内容显示为灰度光栅图像 我正在尝试使用NumPy将我的一些IDL代码转换为Python,并且基本上正在寻找IDL中tv和tvscl命令的替代品。在pylab交互模式下使用ipython,您可以: $ ipython pylab In [1]: imshow(your_array) 或不在pylab模式下: $ ipython In [1]

我有一个Python中的numpy数组,我想在屏幕上以光栅图像的形式显示它。最简单的方法是什么?它不需要特别花哨或者有一个很好的界面,我所需要做的就是将数组的内容显示为灰度光栅图像


我正在尝试使用NumPy将我的一些IDL代码转换为Python,并且基本上正在寻找IDL中
tv
tvscl
命令的替代品。

在pylab交互模式下使用ipython,您可以:

$ ipython pylab
In [1]: imshow(your_array)
或不在pylab模式下:

$ ipython
In [1]: from pylab import *
In [2]: imshow(your_array)
In [3]: pylab.show()
或者不使用pylab名称空间:

$ ipython
In [1]: import matplotlib.pyplot as pyplot
In [2]: pyplot.imshow(your_array)
In [3]: pyplot.show()

根据您的需要,或可能是最好的选择

Matplotlib的灵活性要大得多,但速度要慢得多(Matplotlib中的动画可能会占用大量资源,即使您做得很好)。但是,您将拥有一个非常棒、功能齐全的绘图库供您使用

Glumpy非常适合于基于openGL的2D numpy数组的快速显示和动画,但它的功能受到了很大的限制。但是,如果您需要为一系列图像设置动画或实时显示数据,它比matplotlib要好得多

使用matplotlib(使用pyplot API而不是pylab):

使用glumpy:

import glumpy
import numpy as np

# Generate some data...
x, y = np.meshgrid(np.linspace(-2,2,200), np.linspace(-2,2,200))
x, y = x - x.mean(), y - y.mean()
z = x * np.exp(-x**2 - y**2)

window = glumpy.Window(512, 512)
im = glumpy.Image(z.astype(np.float32), cmap=glumpy.colormap.Grey)

@window.event
def on_draw():
    im.blit(0, 0, window.width, window.height)
window.mainloop()

快速添加:对于使用matplotlib显示,如果您希望图像显示为“光栅”,即像素化而不平滑,则应在调用imshow时包含选项interpolation='nearest'。

再次感谢@Joe,
import glumpy
import numpy as np

# Generate some data...
x, y = np.meshgrid(np.linspace(-2,2,200), np.linspace(-2,2,200))
x, y = x - x.mean(), y - y.mean()
z = x * np.exp(-x**2 - y**2)

window = glumpy.Window(512, 512)
im = glumpy.Image(z.astype(np.float32), cmap=glumpy.colormap.Grey)

@window.event
def on_draw():
    im.blit(0, 0, window.width, window.height)
window.mainloop()