使用numpy.load(『***.npy』)資料時,報錯unicodeerror: unpickling a python object failed: unicodedecodeerror
解決辦法
由於預設編碼問題,造成無法對資料解包:
encoding must be 'ascii', 'latin1', or 'bytes'
所以在使用np.load()
時需要加入編碼選項:
data = np.load('mynpy.npy',encoding='latin1')
即可順利載入。
原因如果使用python3讀取python2生成的npy就有可能產生編碼錯誤,在numpy的原始碼裡有說明:
#
# line 317
encoding : str, optional
what encoding to use when reading python 2 strings. only useful when
loading python 2 generated pickled files in python 3, which includes
npy/npz files containing object arrays. values other than 'latin1',
'ascii', and 'bytes' are not allowed, as they can corrupt numerical
data. default: 'ascii'
# 編碼方式只允許選擇下面三個中的乙個
Python numpy資料型別
本章內容了解 numpy 資料。numpy陣列屬性詳見 numpy 支援的資料型別比 python 內建的型別要多很多,基本上可以和 c 語言的資料型別對應上,其中部分型別對應為 python 內建的型別。下表列舉了常用 numpy 基本型別。名稱描述 bool 布林型資料型別 true 或者 fa...
python numpy 資料型別轉換
numpy資料型別轉換需要呼叫方法astype 不能直接修改dtype。呼叫astype返回資料型別修改後的資料,但是源資料的型別不會變,需要進一步對源資料的賦值操作才能改變。例如 a np.array 1.1,1.2 a.dtype dtype float64 a.astype np.int16 ...
python numpy 資料型別轉換
python numpy 資料型別轉換 numpy資料型別轉換需要呼叫方法astype 不能直接修改dtype。呼叫astype返回資料型別修改後的資料,但是源資料的型別不會變,需要進一步對源資料的賦值操作才能改變。例如 a np.array 1.1,1.2 a.dtype dtype float6...