Python 如何将n个多项式分配给n个变量?
标题说明了一切。我应该做这个任务:Python 如何将n个多项式分配给n个变量?,python,numpy,Python,Numpy,标题说明了一切。我应该做这个任务: def配合(x、y、deg): p1,p2,…,pn=[numpy.poly1d(numpy.polyfit(x,y,i))表示以度为单位的i] 其中,x,y是长度相等的numpy.数组,deg是长度n包含实数的列表。不要太在意列表中的表达式,它也可以是p1,p2,pn=[i表示以度为单位的i]。我只知道len(deg)是n 更新: 如果有人能告诉我为什么我在这个问题上得到无效语法,我将有我的特定问题的解决方案: X范围内i的(len(deg)): exec
def配合(x、y、deg):
p1,p2,…,pn=[numpy.poly1d(numpy.polyfit(x,y,i))表示以度为单位的i]
其中,x
,y
是长度相等的numpy.数组,deg
是长度n
包含实数的列表。不要太在意列表中的表达式,它也可以是p1,p2,pn=[i表示以度为单位的i]
。我只知道len(deg)
是n
更新:
如果有人能告诉我为什么我在这个问题上得到无效语法,我将有我的特定问题的解决方案:
X范围内i的(len(deg)):
exec(“y{:s}={:s}.”格式(str(i),str(numpy.poly1d(numpy.polyfit(x,y,i+1)))(x))
deg=[1,2,3]
,x和y
是包含数字的等长数组
以下是一个通用解决方案,用于将n
变量分配给长度n
的列表中的n
对象:
xrange(len(list))中的i的:
exec(“变量名{:s}={}”。格式(str(i),list[i]))
提前感谢!您可以创建p1,p2,…,pk,…
作为本地人()词汇表的成员:
p=[numpy.poly1d(numpy.polyfit(x, y, i)) for i in deg]
for i in deg : locals()['p'+str(i)]=p[i]
但是它非常棘手,不能被广泛推荐。你可以创建p1,p2,…,pk,
作为本地人()词汇表的成员:
p=[numpy.poly1d(numpy.polyfit(x, y, i)) for i in deg]
for i in deg : locals()['p'+str(i)]=p[i]
但是它非常棘手,不能被广泛推荐。听起来你想为列表中的每个项目指定名称,但你想让这些名称遵循数字模式。当我们人类程序员更容易通过名称跟踪变量时,我们给变量命名。如果我们使用数字
显式命名的变量使用两项:
letter0, letter1 = ['a', 'b']
assert letter0 == 'a'
assert letter1 == 'b'
现在,您可以添加letter2
等等,但为什么还要为单个项目添加名称,而您甚至不知道将有多少项目
如果您为整个列表指定了一个名称,则可以使用索引符号[]
(如数学文本中的下标,如果您已经习惯了):
同样的结果,但现在不管有多少个都有效
因此,如果保留该列表,您的代码可能如下所示:
def fit(x, y, deg):
ps = [numpy.poly1d(numpy.polyfit(x, y, i)) for i in deg]
# You mentioned you wanted to use p1(x) or similar.
# You can access each "p" by index:
the_x_array_applied_to_the_first_p = p[0](x)
the_x_array_applied_to_the_next_p = p[1](x)
# You can do it over the whole list, too:
the_x_array_applied_to_each_p = [p(x) for p in ps]
听起来你想给列表中的每个项目分配名称,但你想让这些名称遵循数字模式。当我们人类程序员更容易通过名称跟踪时,我们给变量命名。如果我们使用数字
显式命名的变量使用两项:
letter0, letter1 = ['a', 'b']
assert letter0 == 'a'
assert letter1 == 'b'
现在,您可以添加letter2
等等,但为什么还要为单个项目添加名称,而您甚至不知道将有多少项目
如果您为整个列表指定了一个名称,则可以使用索引符号[]
(如数学文本中的下标,如果您已经习惯了):
同样的结果,但现在不管有多少个都有效
因此,如果保留该列表,您的代码可能如下所示:
def fit(x, y, deg):
ps = [numpy.poly1d(numpy.polyfit(x, y, i)) for i in deg]
# You mentioned you wanted to use p1(x) or similar.
# You can access each "p" by index:
the_x_array_applied_to_the_first_p = p[0](x)
the_x_array_applied_to_the_next_p = p[1](x)
# You can do it over the whole list, too:
the_x_array_applied_to_each_p = [p(x) for p in ps]
为什么不保留该列表?之后您将如何检索这些变量?我打算保留该列表是的。这些变量应该在x数组
;p1(x),p2(x),…,pn(x)
,然后用于绘图。然后只需执行p=[…]
。稍后,您可以访问p[0]
,p[1]
,…为什么不保留该列表?之后您将如何检索这些变量?我打算保留该列表是的。这些变量应该在x数组上迭代p1(x),p2(x),…,pn(x)
,然后用于绘图。然后只需执行p=[…]
。稍后,您可以访问p[0]
,p[1]
。。。