2017-09-21 18 views
0

私はnumpy.linalg.solveの結果である単純な配列を持っています。私はnumpy.poly1d()を使って多項式を作成します。どんなに私がしようとするもの:numpy.asarrayを()、numpy.reshape()、numpy.transpose()など、私はこのエラーを取得する:Valueerror numpy.poly1d()

c = [[ 1. -0.99390328 0.1617277 ]]は係数と私の配列の端子出力である
[[ 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. 

+1

なぜ係数は2番目のリストの中にラップされていますか?コードを '[[...]]の代わりに' c = [1.0、-0.994、0.162] 'で試してみてください。これが 'linalg.solve'関数の一般的な出力であれば、' numpy.poly1d(c [0]) 'を使ってあなたのリスト内のリストを扱います – offeltoffel

答えて

1

あなたは1.これにより、Cの寸法を小さくする必要があるように私には見えるが使用numpyので行うことができます。

c = np.squeeze(c)

または最初の項目を抽出することにより:

c=c[0]

またはリスト内包表記を使用する:

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