2017-10-15 21 views
1

私はpython3.6でarributeerrorを解決する方法を知りました。 'list'オブジェクトには属性 'astype'がありません。 私の関連コードは吹き荒れです。AttributeError: 'list'オブジェクトを解決するには 'astype'属性がありませんか?

def _init_mean_std(self, data): 
    data = data.astype('float32') 
    self.mean, self.std = np.mean(data), np.std(data) 
    self.save_meanstd() 
    return data 

私にアドバイスできる人はいますか? ありがとうございました!

+3

'data'を属性' astype'を持つものに変換することによって。言ってやるがいい。 – Kanak

+0

自発的に行うのかどうか分かりませんが、デフォルトでは 'np.array(data)'は実際には '' np.array(data) float64's。 'print(data.dtype)'を実行して確認してください。 – Kanak

答えて

1

根本的な問題は、異なるデータ型であるPythonリストとNumPy配列の混乱です。 np.foo(array)として呼び出されるNumPyメソッドは、Pythonリストを与えると、通常はNumPy配列に変換されます。しかし、オブジェクトに含まれるメソッドを呼び出そうとすると、array.foo()のように、もちろんそれは適切な型を持っている必要があります。

配列の種類を一度にnumpyのに知られているように、私は

data = np.array(data, dtype=np.float32) 

を使用してお勧めします。これにより、最初に配列を作成してから別の型にキャストするという不必要な作業が回避されます。

NumPyは "float32"のような文字列の代わりにdtype objectsを使用することをお勧めします。

関連する問題