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)
我在其他地方也看到过类似的问题,但它们来自不同的代码。我的情况是用 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)