zip does not work for imshow: TypeError: Image data cannot be converted to float

zip does not work for imshow: TypeError: Image data cannot be converted to float

我在其他地方也看到过类似的问题,但它们来自不同的代码。我的情况是用 zip 转置数据,然后使用 imshow:

import matplotlib.pyplot as plt
a=[[1,2,3],[4,5,6]]
img_data=zip(*a)
plt.imshow(img_data)

我得到了 类型错误:图像数据无法转换为浮点数

zip returns 迭代器对象(在 python3 中,而不是 list/array 等容器)。您要做的是将 zip 对象转换为 imshow 可以理解的格式。有几个选项。

选项 1
转换为 list -

img_data = list(zip(*a))
plt.imshow(img_data)

选项 2
a 转换为 numpy 数组并转置。由于您使用 zip 达到相同的效果,因此这是有道理的。

plt.imshow(np.array(a).T)