Python错误集锦:matplotlib imshow()方法显示图像提示:TypeError: Invalid shape (100, 100, 5) for image data

在使用matplotlib的imshow()函数显示图像时,遇到了TypeError,原因是传入的numpy数组形状不正确。imshow()方法要求二维数组(灰度图)或三维数组(RGB或RGBA图像)。错误信息提示数组形状(100,100,5)不合法,因为对于彩色图像,第三维必须是3(RGB)或4(RGBA)。解决方案是确保传入的数组为2维或符合RGB/RGBA标准的3维数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:http://www.juzicode.com/archives/3502

 

错误提示:

matplotlib的imshow()方法显示图像时提示:TypeError: Invalid shape (100, 100, 5) for image data

#juzicode.com; #vx:桔子code
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

arr = np.full((100,100,3),100)
plt.imshow(arr)

arr = np.full((100,100,5),100)
plt.imshow(arr)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-9ef92a2fb8cf> in <module>
      8 
      9 arr = np.full((100,100,5),100)
---> 10 plt.imshow(arr)

d:\python\python38\lib\site-packages\matplotlib\pyplot.py in imshow(X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, filternorm, filterrad, resample, url, data, **kwargs)
   2722         filternorm=True, filterrad=4.0, resample=None, url=None,
   2723         data=None, **kwargs):
-> 2724     __ret = gca().imshow(
   2725         X, cmap=cmap, norm=norm, aspect=aspect,
   2726         interpolation=interpolation, alpha=alpha, vmin=vmin,

d:\python\python38\lib\site-packages\matplotlib\__init__.py in inner(ax, data, *args, **kwargs)
   1445     def inner(ax, *args, data=None, **kwargs):
   1446         if data is None:
-> 1447             return func(ax, *map(sanitize_sequence, args), **kwargs)
   1448 
   1449         bound = new_sig.bind(ax, *args, **kwargs)

d:\python\python38\lib\site-packages\matplotlib\axes\_axes.py in imshow(self, X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, filternorm, filterrad, resample, url, **kwargs)
   5521                               resample=resample, **kwargs)
   5522 
-> 5523         im.set_data(X)
   5524         im.set_alpha(alpha)
   5525         if im.get_clip_path() is None:

d:\python\python38\lib\site-packages\matplotlib\image.py in set_data(self, A)
    709         if not (self._A.ndim == 2
    710                 or self._A.ndim == 3 and self._A.shape[-1] in [3, 4]):
--> 711             raise TypeError("Invalid shape {} for image data"
    712                             .format(self._A.shape))
    713 

TypeError: Invalid shape (100, 100, 5) for image data

 

错误原因:

1、imshow()方法显示numpy数组,数组要么是2维数组(灰度图),要么是3维数组(彩色图)。如果是3维数组,其第3维必须是3或者4,正好对应了3通道或者4通到彩色图像。错误信息中也有完整提示:

    709         if not (self._A.ndim == 2
    710                 or self._A.ndim == 3 and self._A.shape[-1] in [3, 4]):

 

解决方法:

1、matploglib的imshow()方法如果显示3维数组,只能显示3通道或者4通道的彩色图像,其他通道数没有实际意义。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值