2017-09-30 2 views
0

Ich möchte die Polynome in einer Liste speichern, aber wenn ich sie in die Liste anfügen verlieren sie die Variable x und haben nur die Koeffizienten.Speichern von Polynomen wie aus der von Poly1D() -Funktion in eine Liste

import numpy as np 
from numpy import random 
from pylab import * 
from sklearn.metrics import r2_score 

np.random.seed(2) 
pageSpeeds = np.random.normal(3.0, 1.0, 1000) 

# purchaseAmount function (non-linear) 
purchaseAmount = np.random.normal(50.0, 10.0, 1000)/pageSpeeds 

x = np.array(pageSpeeds) 
y = np.array(purchaseAmount) 

polyfitInit = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0, 13:0, 14:0, 15:0} 
polyforms = [] 
for c in polyfitInit: 
    z = np.poly1d(np.polyfit(x, y, c)) 
    r2 = r2_score(y, z(x)) 
    polyfitInit[c] = r2 
    polyforms.append(z) 

print polyforms 

ouptut jetzt:

[poly1d ([-9,04306562, 46,68709008]), poly1d ([3,73263241, -31,78596189, 77,53159067] ...]

Ausgang gesucht: [-9,043 x + 46.69, 3.73263241x^2 + -31.78596189x + 77,53159067 ...]

Danke Jungs

Antwort

0

poly1d ein Objekt dieser Klasse macht.

In [153]: p = np.poly1d([1,2,3]) 
In [156]: type(p) 
Out[156]: numpy.lib.polynomial.poly1d 

Die repr dieser Klasse ist die Zeichenfolge, die Sie erhalten haben; die str ist die Zeichenfolge, die Sie

wollen
In [159]: repr(p) 
Out[159]: 'poly1d([1, 2, 3])' 
In [160]: str(p) 
Out[160]: ' 2\n1 x + 2 x + 3' 
In [161]: print(p) 
    2 
1 x + 2 x + 3 

Legen Sie mehrere von diesen in einer Liste, Ihre polyforms

In [162]: alist = [p, p] 
In [163]: alist 
Out[163]: [poly1d([1, 2, 3]), poly1d([1, 2, 3])] 
In [164]: print(alist) 
[poly1d([1, 2, 3]), poly1d([1, 2, 3])] 

Druck der Liste zeigt die repr Form, nicht die str.

Es gibt einen Unterschied zwischen den Anzeigezeichenfolgen und den tatsächlichen Objekten. Meine alist ist eine Liste von tatsächlichen poly1d Objekten. Es ist keine Liste ihrer String-Repräsentation (en). Die Variable x ist nicht Teil des Objekts poly1d.

Das Schlüsselattribut oder Daten eines poly1d ist seine coef

In [165]: p.coef 
Out[165]: array([1, 2, 3]) 

Und Sie können eine Bewertung für jedes Element der Liste ausführen:

In [172]: [q(.5) for q in alist] 
Out[172]: [4.25, 4.25] 
Verwandte Themen