1. ホーム
  2. python

[解決済み] TypeError: 0-d配列に対する反復処理 Python

2022-02-03 07:37:42

質問

非常に基本的な最近傍計算を書こうとしています。基本的にtがどのように見えるかを見たいのですが、このような型エラーが発生しました。tだけを返すように関数に頼んだら、""と言われました。私はそれをリストに回すように頼んだとき、それは投げました "TypeError: iteration over a 0-d array Python "。

どうすれば直りますか?

...

t = np.array(map(lambda v:
             map(lambda w: distance(v, w, L), x_train.values),
             x_test.values)) 

...

完全なトレース

解決方法は?

問題点は np.array はイテレータを取らないので、イテレータに変換する必要があります。 list 以下のように、まず

t = np.array(list(map(lambda v: map(lambda w: distance(v, w, L),
                      x_train.values), x_test.values)))

のとおりです。 numpy.array ドキュメンテーション であれば、必須パラメータでなければならない。

配列、配列インタフェースを公開するオブジェクト、そのオブジェクトの メソッドが返す配列、または任意の(ネストされた)シーケンス。

または numpy.fromiter を指定し、忘れずに dtype は、例えば dtype=float .