Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将n个多项式分配给n个变量?_Python_Numpy - Fatal编程技术网

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]
。。。