我在其他地方看到了类似的问题,但它们来自不同的代码。我的情况是用zip转置数据,然后使用imshow:
zip
imshow
import matplotlib.pyplot as plt a=[[1,2,3],[4,5,6]] img_data=zip(*a) plt.imshow(img_data)
我得到TypeError:图像数据无法转换为float
zip返回一个迭代器对象(在python3中,而不是像列表/数组这样的容器)。你想要做的是将zip对象转换为imshow理解的格式。有几种选择。
选项1 转换为list -
list
img_data = list(zip(*a)) plt.imshow(img_data)
选项2 将a转换为numpy数组并进行转置。既然你正在使用zip达到相同的效果,这是有道理的。
a
plt.imshow(np.array(a).T)