我已经创建了一个数组:

import numpy as np
data = np.zeros( (512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]

我想要做的是在512x512图像的中心显示一个红点。(至少开始时……我想我可以从那里弄清楚剩下的)


当前回答

以下方法应该有效:

from matplotlib import pyplot as plt
plt.imshow(data, interpolation='nearest')
plt.show()

如果你正在使用Jupyter notebook/lab,在导入matplotlib之前使用这个内联命令:

%matplotlib inline 

一个更有特色的方法是安装ipyml pip安装ipympl并使用

%matplotlib widget 

请参见示例。

其他回答

注意:这两个api都是先弃用后删除的。

最短路径是使用scipy,像这样:

# Note: deprecated in v0.19.0 and removed in v1.3.0
from scipy.misc import toimage
toimage(data).show()

这也需要安装PIL或Pillow。

类似的方法也需要PIL或Pillow,但可能会引起不同的观众:

# Note: deprecated in v1.0.0 and removed in v1.8.0
from scipy.misc import imshow
imshow(data)

Python成像库可以使用Numpy数组显示图像。看看这个页面的示例代码:

数字数组和PIL图像对象之间的转换

编辑:正如该页底部的说明所说,你应该检查最新的发布说明,这使得这更简单:

http://effbot.org/zone/pil-changes-116.htm

以下方法应该有效:

from matplotlib import pyplot as plt
plt.imshow(data, interpolation='nearest')
plt.show()

如果你正在使用Jupyter notebook/lab,在导入matplotlib之前使用这个内联命令:

%matplotlib inline 

一个更有特色的方法是安装ipyml pip安装ipympl并使用

%matplotlib widget 

请参见示例。

您可以使用PIL创建(并显示)一个图像:

from PIL import Image
import numpy as np

w, h = 512, 512
data = np.zeros((h, w, 3), dtype=np.uint8)
data[0:256, 0:256] = [255, 0, 0] # red patch in upper left
img = Image.fromarray(data, 'RGB')
img.save('my.png')
img.show()

这可能是一个可能的代码解决方案:

from skimage import io
import numpy as np
data=np.random.randn(5,2)
io.imshow(data)