2017-10-15 129 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'屬性的東西。說,一個numpy數組。做'numpy進口np; data = np.array(data).astype('float32')' – Kanak

+0

我不知道你是否自願做,但是請注意,默認'np.array(data)'實際上會產生' float64's。通過執行'print(data.dtype)'來檢查。 – Kanak

回答

1

根本問題是Python列表和NumPy數組的混淆,它們是不同的數據類型。被調用爲np.foo(array)的NumPy方法通常不會抱怨,如果你給它們一個Python列表,他們會將它轉換爲一個NumPy數組。但是,如果您嘗試調用對象中包含的方法,例如array.foo(),那麼它當然必須具有適當的類型。

我建議使用

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

,使得數組的類型是已知的NumPy的一次。這可以避免不必要的工作,首先創建一個數組然後將其轉換爲另一種類型。

NumPy建議使用dtype objects而不是像「float32」這樣的字符串。

相關問題