Python:使用NumPy数组绘图失败,plt.plot(s,s)报错求助
解决你用NumPy数组绘图时遇到的plt.plot错误问题
嘿,我看了你的代码,问题出在你错误覆盖了NumPy的array构造函数,这不仅让你没法正常创建NumPy数组,还可能埋下后续的隐患。咱们一步步来修正:
问题根源
你写了np.array=[],这行代码把原本NumPy用来创建数组的核心函数np.array直接替换成了一个空列表!之后的s=np.array其实是把这个空列表赋值给了s,你后续的append操作只是在给普通Python列表加元素,完全没用到NumPy数组的功能,而且这会导致你之后再想调用np.array()创建数组时彻底失败——因为它现在是个列表,不是函数了。
修正后的代码
下面是两种正确的实现方式,你可以选一种:
import numpy as np import matplotlib.pyplot as plt def npArrDefine(): # 方法1:先构建普通列表,再转为NumPy数组 s_list = [] for i in range(10): s_list.append(i + 3) s = np.array(s_list) # 用NumPy的array函数把列表转成数组 # 方法2(更简洁):直接用NumPy的arange生成数组,省去循环 # s = np.arange(3, 13) # 生成从3到12的10个元素,和循环效果一样 plt.plot(s, s) plt.axis([0, 5, 0, 20]) plt.show() npArrDefine()
为什么这样改?
- 再也不会覆盖
np.array函数,后续使用NumPy的其他功能也不会出问题 - 真正创建了NumPy数组,比普通列表更适合数值计算和绘图(matplotlib对NumPy数组的支持更高效)
- 两种方法都能得到你想要的
[3,4,...,12]的数组,绘图也能正常运行
内容的提问来源于stack exchange,提问作者pexpex223
相关产品推荐
相关产品推荐

