2016-10-21 12 views
-1

のscipyから返り値を無視していますが、文書を参照する必要はありません[冗談]しかし少し深刻です。すべての戻り値を受け入れます。たとえば、私はFMIN_BFGS()を呼び出しています。それは値の束を返すオプションがあります、私は戻った最小を保つだけです。だから私はタイプ私はSCIPY関数を呼び出すときにPython

res = fmin_bfgs(...) 

"あまりにも多くの値をアンパックする"と死ぬ。

しかし、同じエラーメッセージが表示されると思いました。最後に問題の答えを使用することです#431866

res, _, _ , _ = fmin_bfgs(...) 

本当にですか?ドキュメントをチェックして戻り値の数を数え、その多くのアンダースコアを使用しなければならないのでしょうか、最初の値を除いて返されたすべてのものを無視するためのもう少しの難解な方法がありますか?

おかげで、J.

+1

[mcve]を入力してください。 'res = fmin_bfgs(your_args_here)'はうまくいくはずです。 – DSM

+0

はるかにうまく設計されたラッパー[minim](https://docs.scipy.org/doc/scipy-0.17.1/reference/generated/scipy.optimize.minimize.html#scipy.optimize.minimize)の使用を検討してください。 – sascha

答えて

0

は実際に、あなたの最初の例は動作します:

res = fmin_bfgs(...) 

その後、あなたはRES [0]とに興味を持っている値を参照することができます。 python 3では

だけで、あなたも行うことができます:

RESへのタプルから最初の値を代入する
res, *_ = fmin_bgfs(...) 

、および新しいタプルとして残りの値に_。

0

私の一部ではダムエラーです。どのような私のコードは、実際のように見えたことは、私は私が行っている必要がありますように、配列する解像度を定義されていなかった以外

res, l2e = fmin_bfgs(...) 

ました。したがって、通訳者は、サイズ= 2のベクトルを与えて、サイズ= Nの返答をfmin_bfgsから返すと考えました。呼び出し前にres = np.zeros(N)を定義すると、すべて正常に動作します。

あなたの時間を無駄にしていると申し訳ありませんが...このような

+2

これはまったく効果がなかったはずです。 – DSM

+0

この呼び出しの前の 'res'の値は、この式の仕組みに違いはありません。これは割り当てであり、値の挿入ではありません。 – hpaulj

0

関数は、値のタプルを返します。

mytuple = foo(...) # accept the tuple 
print(len(mytuple)) # look at the number of items 
val1= mytuple[0]  # select the 1st item 

それとも、あなたはすぐにインデックスを使用してすることができ、タプルアンパックオプション

a, b, c = mytuple 
a, b, c = foo(...) 
a, _, _ = foo(...)  # _ is just a name for unimportant value 

を使用することができます:return文を使用すると、いくつかのオプションを持っている

return arr1, scalar2, label3 

この問題が発生した

ようになります

a = foo(...)[0] 

fooは、単一のアイテムタプルを返す場合

a, = foo(...) 
a, = (12,) # works 
a, = (12,12,12) # unpacking error 

のみ働きます。これは、この関数がそのタプル数を返すという「ルール」を強制する方法として最も有用です。左辺,は右辺のように機能し、タプルを指定します。

これは基本的なPythonの問題 - how to unpack or select items from a tupleです。 Scipyにとって特別なことではありません。

================

しかしfmin_bfgsで一目は私が求めるならば、私はどちらか一つの項目(開梱タプルではない)、7つのアイテムを得ることができることを示していますフル出力、またはさらに値を求める場合は8です。

関連する問題