2017-09-21 4 views
0

Ich habe ein einfaches Array, das das Ergebnis numpy.linalg.solve ist. Ich benutze es um ein Polynom mit numpy.poly1d() zu erstellen. Egal, was ich versuche: numpy.asarray(), numpy.reshape(), numpy.transpose() usw. bekomme ich diesen Fehler:Valueerror numpy.poly1d()

[[ 1.   -0.99390328 0.1617277 ]] 
Traceback (most recent call last): 
    File "aPCv1.py", line 62, in <module> 
    p = np.poly1d(c) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/lib/polynomial.py", line 1094, in __init__ 
    raise ValueError("Polynomial must be 1d only.") 
ValueError: Polynomial must be 1d only. 

wo c = [[ 1. -0.99390328 0.1617277 ]] ist die Terminal-Ausgabe meiner Reihe mit den Koeffizienten.

+1

Warum sind Ihre Koeffizienten in einer zweiten Liste enthalten? Versuchen Sie Ihren Code mit 'c = [1.0, -0.994, 0.162]' 'anstelle von' [[...]] ''. Wenn dies die gemeinsame Ausgabe der 'linalg.solve'-Funktion ist, versuchen Sie' numpy.poly1d (c [0]) ', um die Liste in Ihrer Liste zu adressieren – offeltoffel

Antwort

1

scheint mir, wie Sie die Dimensionen von c um 1 zu reduzieren, müssen diese durch numpy getan werden kann, mit:

c = np.squeeze(c)

oder durch das erste Element zu extrahieren:

c=c[0]

oder eine Liste Verständnis mit:

c = [i for i in j for j in c]