numpy.ndarray对象没有属性imshow

问题描述

我正在尝试将python与jupyter笔记本一起使用,以提出一种方案,您可以握住智能灯泡并通过漫反射来从手上获取信息。我设法完成了所有这些工作,并将所有这些保存在变量PIX中:

PIX = np.array(pictures)
print(PIX.shape)

这将按预期输出(81,480,640,3)(81表示转换为RGB的可见光谱,以便灯能够得到它)。

但是,我现在想可视化数据,并且我认为imshow是完美的实现。我环顾四周,Datacamp对此进行了很好的总结,并从https://campus.datacamp.com/courses/biomedical-image-analysis-in-python/exploration?ex=11复制并粘贴。我更改了一些变量,以使脚本如下所示:

# Plot the images on a subplots array 
fig,axes = 
plt.subplots(int(PIX.shape[0]/9),int(PIX.shape[0]/9))

for i,ax in enumerate(axes):
    axes[i].imshow(PIX[i,:,0],interpolation='none')
# Render the figure
plt.show()

同样,这很简单。但是,我得到了错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-20-a7bb604d1828> in <module>
      3 
      4 for i,ax in enumerate(axes):
----> 5     axes[i].imshow(PIX[i,interpolation='none')
      6 # Render the figure
      7 plt.show()

AttributeError: 'numpy.ndarray' object has no attribute 'imshow' 

我尝试了'numpy.ndarray' object has no attribute 'imshow''numpy.ndarray' object has no attribute 'show' using matplotlib的修复,它们似乎也有类似的问题。但是,在我的情况下,所有修复程序似乎均不起作用。

任何帮助将不胜感激!

解决方法

axes是2D ndarray,因此您必须使用两个索引。

或者,您可以替换

for i,ax in enumerate(axes)

使用

for i,ax in enumerate(axes.ravel())

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...