我写了这段代码来制作一个数组=>
import numpy as np
a = np.array([[[1,3],[1,4]],[[1,4],[6,9]]])
np.savetxt('test.txt',a,fmt='%d')
并得到这个错误=>
Traceback(最近一次调用最后一次):文件“/usr/local/lib/python3.4/dist-packages/numpy-1.11.2-py3.4-linux-x86_64.egg/numpy/lib/npyio.py” ,第1158行,在savetxt中fh.write(asbytes(格式为%tuple(row)换行符))TypeError:%d format:需要一个数字,而不是numpy.ndarray在处理上述异常时,发生了另一个异常:Traceback(大多数)最近调用last):文件“”,第1行,在文件“/usr/local/lib/python3.4/dist-packages/numpy-1.11.2-py3.4-linux-x86_64.egg/numpy/lib/ npyio.py“,第1162行,在savetxt%(str(X.dtype),格式))TypeError:数组dtype('int64')和格式说明符('%d%d')之间不匹配
如何使用numpy将数组保存为文件中的整数?
3 回答
这个问题有一个旧线程
Saving numpy array to csv produces TypeError Mismatch
如果您检查,您的阵列是一个导致问题的3D阵列
1. If you translate it to a 2D it will work
import numpy as np a = np.array([[[1,3],[1,4]],[[1,4],[6,9]]])np.savetxt('test.txt', a.reshape(-1,a.shape [-1]),FMT = “%d”)
2. If you write one row at a time it will work too
但这会有回读的问题
我的建议,把它写成dict / json并在阅读后将其转换为numpy
我不确定你想要什么样的输出......
你可以这样做
会给你
1 3
1 4
1 4
6 9
基本上你不能在对象/类/你有什么用途上使用格式字符串;它期待一个数字,而不是一系列数字
将数组转换为可打印的字符串 . 同样,你不能真正保存文件中的整数,只保存文件中的字符串 .
您要做的是获取数组中的每一行并将其写入文件,类似于: