我正在尝试使用numpy的savez
和load
方法来(惊奇)保存和加载numpy数组,这些数组足够大,以至于我以前使用的方法(另存为JSON)非常慢。
我重现了以下代码片段中遇到的问题:
import numpy
test_path = "test.npy"
test_data = numpy.random.rand(100000)
with open(test_path, 'w') as test_file:
numpy.save(test_file, test_data)
运行时,出现以下错误:
TypeError: write() argument must be str, not bytes
我已经能够解决此问题,而不必直接通过字符串传递numpy.save
路径:
numpy.save(test_path, test_data)
但是,根据我对文档的阅读,我发现此错误很奇怪,numpy.save
应该直接接受一个类似文件的打开对象。我想念什么吗?
答案 0 :(得分:0)
您正在打开文件,然后将其保存到打开的文件中,numpy.save
不需要指向已打开文件的文件指针,而是指向文件的路径,因此代码应为:
numpy.save(test_path, test_data)
答案 1 :(得分:0)
尝试:
with open(test_path, 'wb+') as test_file:
numpy.save(test_file, test_data)
由于.npy是二进制文件,因此您必须将数据作为字节而不是字符串进行传递。