You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

保存.npy文件遇TypeError及UnicodeDecodeError的解决求助

解决Numpy读写.npy文件的字节编码与类型错误

问题根源

你遇到的两个错误本质上都是文件打开模式不匹配导致的:numpy的.npy格式是二进制文件,读写时必须用二进制模式,而你要么用了文本写入模式,要么用了文本读取模式,才触发了报错。


第一个错误:写入时的TypeError: write() argument must be str, not bytes

你最初的写入代码用了'w'(文本写入模式),但np.save()需要写入二进制数据,文本模式只能处理字符串,所以会抛出类型错误。

你改成'wb'(二进制写入模式)是正确的,但读取时没同步调整模式,才引发了第二个错误。


第二个错误:读取时的UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93...

读取时你用了默认的文本读取模式(open()默认是'r'),但.npy是二进制文件,文本模式会尝试用UTF-8解码二进制内容,自然会触发编码错误。


最终正确的代码实现

写入.npy文件

bottleneck_features_train = model.predict_generator(generator, nb_train_samples // batch_size)
np.save(open('bottleneck_features_train.npy', 'wb'), bottleneck_features_train)

读取.npy文件

def train_top_model():
    train_data = np.load(open('bottleneck_features_train.npy', 'rb'))

更简洁的写法(推荐)

其实np.save和np.load可以直接接收文件名作为参数,它们会自动处理二进制模式,不用手动调用open(),这样更不容易出错:

# 写入
np.save('bottleneck_features_train.npy', bottleneck_features_train)

# 读取
def train_top_model():
    train_data = np.load('bottleneck_features_train.npy')

内容的提问来源于stack exchange,提问作者Atul Balaji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:57:59