zip不适用于imshow:TypeError:图像数据无法转换为float

问题描述 投票:2回答:1

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

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

我得到TypeError:图像数据无法转换为float

python python-3.x typeerror imshow
1个回答
2
投票

zip返回一个迭代器对象(在python3中,而不是像列表/数组这样的容器)。你想要做的是将zip对象转换为imshow理解的格式。有几种选择。

选项1 转换为list -

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

选项2 将a转换为numpy数组并进行转置。既然你正在使用zip达到相同的效果,这是有道理的。

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.