尝试在matplotlib中使用sum运算符会出现错误

问题描述 投票:0回答:1

因此,我首先要提到的是,我基本上对与Jupyter Notebook,matplotlib和numpy之类的东西相关的一切都是全新的。因此,这就是为什么我很可能无法明确表达我的问题。因此,我恳求您的耐心:)(是的,我的英语也太烂了...)

无论如何,我正在尝试创建一个交互式情节。因此,我想显示方波的第一个[[n多项式的功能,其中可以使用滑块选择n的值。这是我到目前为止所得到的:

import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt %matplotlib inline plt.rcParams['figure.figsize'] = (11,4) plt.rcParams['figure.dpi'] = 150 from ipywidgets import interact,interactive, fixed, interact_manual import ipywidgets as Widgets def f(n): plt.plot( np.arange(0,10), 1/pi * sum( 2/(i* pi) * (1- cos(i*pi) ) * sin(i*np.arange(0,10)) for i in range(1,n) ) ) plt.ylim(-2,2) interact(f, n= 1)
现在,一切正常,直到我设置函数的行,所以带有此行的行

plt.plot(np.arange ...)

它给我以下错误:

ValueError:x和y必须具有相同的第一维度,但形状为(10,)和(1,)

我已经弄清楚这与

sum()

运算符的使用以及在其中使用变量n有关。如果我不将n放在sum中,则说明一切正常,我正在获取图表。所以,基本上,问题是我必须做些什么才能实现我的想法。

感谢您的回复,我知道我的帖子可能因为其风格或其他原因而对某些人感到非常讨厌,对此我感到抱歉。

numpy matplotlib sum jupyter-notebook interactive
1个回答
0
投票
使用sum意味着您将值列表折叠为一个值,这就是numpy告诉您的-您有10个x值和只有1个y值(因为您将它们全部加在一起) 。我认为您的意思是创建一个总和列表,因此只需将一个结束括号())从for i in range(n)之后移到它之前:

plt.plot(np.arange(0,10), 1/pi * sum(2/(i* pi) * (1- cos(i*pi)) * sin(i*np.arange(0,10))) for i in range(1,n))

© www.soinside.com 2019 - 2024. All rights reserved.