今天简化画图代码的时候发现了很奇怪的报错现象,经过一系列尝试找到了根源,希望帮助后来人,主要问题出现在如下语句中(为了体现问题、方便比对,特意在这改变了x为xx,如果你不想看这冗长的示例,可以直接按照下文红字的方法修改

import numpy as np
import matplotlib.pyplot as plt
#===========做等值线图===========
y = x = np.arange(10)
xx = [str(i) for i in x]#将x中的元素转化为字符串类型
X,Y = np.meshgrid(xx,y)
Z = np.sin(x)[:, np.newaxis] * np.cos(y)[np.newaxis, :]
plt.contourf(X,Y,Z)
#===========报错信息==============
'''
Traceback (most recent call last):Input In [63] in <cell line: 1>plt.contourf(X,Y,Z)...TypeError: unhashable type: 'numpy.ndarray'
'''
#X、Y、Z的输出形式
'''
X
Out[90]:
array([['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']], dtype='<U1')Y
Out[91]:
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],[2, 2, 2, 2, 2, 2, 2, 2, 2, 2],[3, 3, 3, 3, 3, 3, 3, 3, 3, 3],[4, 4, 4, 4, 4, 4, 4, 4, 4, 4],[5, 5, 5, 5, 5, 5, 5, 5, 5, 5],[6, 6, 6, 6, 6, 6, 6, 6, 6, 6],[7, 7, 7, 7, 7, 7, 7, 7, 7, 7],[8, 8, 8, 8, 8, 8, 8, 8, 8, 8],[9, 9, 9, 9, 9, 9, 9, 9, 9, 9]])Z
Out[92]:
array([[ 0.        ,  0.        , -0.        , -0.        , -0.        ,0.        ,  0.        ,  0.        , -0.        , -0.        ],[ 0.84147098,  0.45464871, -0.35017549, -0.83304996, -0.55002214,0.2386935 ,  0.80795544,  0.63438687, -0.12243406, -0.76668968],[ 0.90929743,  0.4912955 , -0.37840125, -0.90019763, -0.59435646,0.2579333 ,  0.87308037,  0.68552138, -0.13230281, -0.8284884 ],[ 0.14112001,  0.07624747, -0.05872664, -0.13970775, -0.09224219,0.04003041,  0.13549924,  0.10639069, -0.02053297, -0.12857871],[-0.7568025 , -0.40890213,  0.31494096,  0.74922879,  0.49467912,-0.21467625, -0.72665927, -0.57055511,  0.11011479,  0.68954566],[-0.95892427, -0.518109  ,  0.3990533 ,  0.94932784,  0.62679474,-0.27201056, -0.9207306 , -0.72293517,  0.13952351,  0.87370493],[-0.2794155 , -0.15096884,  0.11627788,  0.27661925,  0.18263816,-0.07925961, -0.26828646, -0.21065197,  0.04065496,  0.25458392],[ 0.6569866 ,  0.35497137, -0.27340289, -0.6504118 , -0.4294351 ,0.18636225,  0.63081901,  0.49530368, -0.09559157, -0.59860037],[ 0.98935825,  0.53455254, -0.4117183 , -0.97945724, -0.64668771,0.28064352,  0.94995239,  0.74587941, -0.14395166, -0.90143424],[ 0.41211849,  0.22266857, -0.1715018 , -0.40799421, -0.26937862,0.11690243,  0.39570392,  0.31069706, -0.05996325, -0.37549362]])
'''

经过多次尝试,发现这是由于X和Y中含有'string'(字符)类型的元素导致的,只需更改为'int'或'float'(数字),就能防止报错,并不需要改变X和Y的类型,他们可以依然是'numpy.ndarray'。

更改示例如下,

y = x = np.arange(10)
X,Y = np.meshgrid(x,y)
Z = np.sin(x)[:, np.newaxis] * np.cos(y)[np.newaxis, :]
plt.contourf(X,Y,Z)
plt.show()
'''
X
Out[85]:
array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])Y
Out[86]:
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],[2, 2, 2, 2, 2, 2, 2, 2, 2, 2],[3, 3, 3, 3, 3, 3, 3, 3, 3, 3],[4, 4, 4, 4, 4, 4, 4, 4, 4, 4],[5, 5, 5, 5, 5, 5, 5, 5, 5, 5],[6, 6, 6, 6, 6, 6, 6, 6, 6, 6],[7, 7, 7, 7, 7, 7, 7, 7, 7, 7],[8, 8, 8, 8, 8, 8, 8, 8, 8, 8],[9, 9, 9, 9, 9, 9, 9, 9, 9, 9]])Z
Out[87]:
array([[ 0.        ,  0.        , -0.        , -0.        , -0.        ,0.        ,  0.        ,  0.        , -0.        , -0.        ],[ 0.84147098,  0.45464871, -0.35017549, -0.83304996, -0.55002214,0.2386935 ,  0.80795544,  0.63438687, -0.12243406, -0.76668968],[ 0.90929743,  0.4912955 , -0.37840125, -0.90019763, -0.59435646,0.2579333 ,  0.87308037,  0.68552138, -0.13230281, -0.8284884 ],[ 0.14112001,  0.07624747, -0.05872664, -0.13970775, -0.09224219,0.04003041,  0.13549924,  0.10639069, -0.02053297, -0.12857871],[-0.7568025 , -0.40890213,  0.31494096,  0.74922879,  0.49467912,-0.21467625, -0.72665927, -0.57055511,  0.11011479,  0.68954566],[-0.95892427, -0.518109  ,  0.3990533 ,  0.94932784,  0.62679474,-0.27201056, -0.9207306 , -0.72293517,  0.13952351,  0.87370493],[-0.2794155 , -0.15096884,  0.11627788,  0.27661925,  0.18263816,-0.07925961, -0.26828646, -0.21065197,  0.04065496,  0.25458392],[ 0.6569866 ,  0.35497137, -0.27340289, -0.6504118 , -0.4294351 ,0.18636225,  0.63081901,  0.49530368, -0.09559157, -0.59860037],[ 0.98935825,  0.53455254, -0.4117183 , -0.97945724, -0.64668771,0.28064352,  0.94995239,  0.74587941, -0.14395166, -0.90143424],[ 0.41211849,  0.22266857, -0.1715018 , -0.40799421, -0.26937862,0.11690243,  0.39570392,  0.31069706, -0.05996325, -0.37549362]])
'''

输出等值线图成功了:

显而易见地,两种写法并没有改变X和Y的numpy.adarray类型,只是做了列表元素类型上的修改。

###如有疑问 欢迎留言###

【解决报错原因分析】画图plt.contourf(X,Y,Z)报错TypeError: unhashable type: ‘numpy.ndarray‘(含详细示例讲解)相关推荐

  1. 成功解决TypeError: unhashable type: 'numpy.ndarray'

    成功解决TypeError: unhashable type: 'numpy.ndarray' 目录 解决问题 解决思路 解决方法 解决问题 TypeError: unhashable type: ' ...

  2. getparameter方法中文显示问号解决方法_电脑显示器花屏怎么办 电脑显示器花屏解决方法【原因分析】...

    本文告诉大家电脑显示器花屏怎么办呢,电脑显示器花屏解决方法和原因分析: 指电脑屏幕上有与常色不同的条纹,斑点或色块,或有位置颠倒.错乱,屏幕抖动.扭曲等情况. 显示器花屏是极其常见的故障,产生的原因有 ...

  3. Python编码报错 TypeError: unhashable type set

    问题: TypeError: unhashable type set class FTP(object):def __init__(self,ip,user,passwd) :self.ip = ip ...

  4. typeError: unhashable type: 'list’问题分析

    list常用去重方法 在python中使用list存储数据时有时候需要list中的数据不能重复,这样就需要用到去重操作,因为set是会自动把重复的内容去掉的,所以常用的简单去重方法是先将list转为s ...

  5. 成功解决 TypeError: type numpy.ndarray doesn't define __round__ method

    成功解决 TypeError: type numpy.ndarray doesn't define __round__ method 目录 解决问题 解决问题 解决方法 解决问题 TypeError: ...

  6. CodeBlocks报错原因分析:找不到编译器 / th_en_US.idx' not found! 提示

    找不到编译器解决方法 新装了一个CodeBlocks,无法运行程序,报错如下: Project/Target: "ACM1 - Debug":The compiler's setu ...

  7. 梦幻西游 登入不显示服务器失败怎么办,《梦幻西游三维版》登录不进去怎么解决 登录失败原因分析...

    导 读 梦幻西游三维版登录不进去如何解决想必还有不少小伙伴不太清楚,一起往下看九游小编整理的图文介绍,一起来看看吧. 梦幻西游三维版中,登录不进去解决办法有两种,第一种:稍等片刻再尝试登录即可.第二种 ...

  8. MySQL server has gone away报错原因分析及解决办法

    原因1. MySQL 服务宕了 判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长 $ mysql -uroot -p -e "show global status l ...

  9. pandas.read_csv() 报错 OSError: Initializing from file failed,报错原因分析和解决方法

    今天调用pandas读取csv文件时,突然报错" OSError: Initializing from file failed ",我是有点奇怪的,以前用的好好的,read_csv ...

最新文章

  1. 网络增强现实开发简介 Introduction to Web AR development
  2. 简明 Vim 练级攻略
  3. 视频云直播:场景、技术及优化
  4. 【分块】区间众数(金牌导航 分块-1)
  5. Maven+Tomcat的热部署方案
  6. 北大毕业 15 年经验架构师,重磅解读 5G 时代的计算平台
  7. 自动驾驶算法-滤波器系列(二)—— 卡尔曼滤波简介及其变种(EKF、UKF、PF)介绍
  8. rundeck 内存溢出
  9. VB.NET 读写HTML 文件,VB.NET 简单介绍文件的读写----流类
  10. prometheus linux下载_Prometheus笔记
  11. vue中a标签跳转问题(跳转网址自动加上http://local:8080/)
  12. paypal开发整理(7)—Get Start
  13. logmein攻防世界wp
  14. Mac系统升级,降级PHP出现的问题解决办法
  15. 计算机考研搜集的资料(408)
  16. jsf 教学_JSF初学者教程
  17. Abbexa 驴抗山羊 IgG (HL) 抗体
  18. 极高水平的电吉他音源 Orange Tree Samples Evolution Stratosphere Kontakt
  19. COSCon'22 杭州会场回顾 | 谁说开源人只懂代码不懂玩?
  20. 中兴网络设备交换机路由器查看告警信息命令方法

热门文章

  1. gradle buildTypes
  2. 效果炸了,Drawable 实现红鲤鱼动画,点哪儿游哪儿(下)
  3. python好看图案的编程代码_利用Python绘制了一些有意思的图案
  4. ora-07445 oracle 9,遇到ORA-07445错误
  5. 终于有人来盘一盘安卓ASO技巧了,安卓市场aso优化技巧
  6. 错误 C4996 inet_addr: Use inet_pton() or InetPton() instead or defin
  7. 㳟祝202205026 gerrit 公司9周年生日
  8. intellij idea字体大小设置一秒完成
  9. 日常积累6:提取并拟合图片中的曲线
  10. Echarts 实现动态地图