一、numpy自带的方式保存数组到文件(麻烦)但文件可视化。
import numpy as np
# 生成数据
data = np.arange(200).reshape((4, 5, 10))
# 写入磁盘中
with open('test.txt', 'w') as outfile:
# #开头的会被np.savetxt忽略
outfile.write('# Array shape: {0}\n'.format(data.shape))
for data_slice in data:
# 左对齐宽度7 保留2位 浮点数
# 保存二维数组
np.savetxt(outfile, data_slice, fmt='%-7.2f')
# 每段分隔标志
outfile.write('# New slice\n')
# 读取
new_data = np.loadtxt('test.txt')
print(new_data.shape) # (20, 10)
# reshape 一下
new_data = new_data.reshape((4, 5, 10))
# 检测是否相同
assert np.all(new_data == data)
二、这种方式能支持任意类型的,怎么保存,怎么读取(方便)。
import pickle
import numpy as np
# 支持任意的数组
my_data = {'a': [1, 2.0, 3, 4 + 6j],
'b': ('string', u'Unicode string'),
'c': None}
# 生成数据
my_data = np.arange(200).reshape((4, 5, 10))
output = open('data.pkl', 'wb')
# 写入到文件
pickle.dump(my_data, output)
output.close()
pkl_file = open('data.pkl', 'rb')
# 从文件中读取
data = pickle.load(pkl_file)
pkl_file.close()
print(data)
assert my_data.shape == data.shape
assert np.all(my_data == data)
参考
https://stackoverflow.com/questions/3685265/how-to-write-a-multidimensional-array-to-a-text-file