python numpy資料load報錯

2021-09-24 08:52:18 字數 1715 閱讀 2614

使用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...