我已编写此代码以生成数组=>
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(最近一次调用最后一次):文件“”,第1行,in 文件 “/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),format))TypeError:数组dtype('int64')和格式说明符('%d%d')
之间不匹配
如何使用numpy将数组保存为文件中的整数?
答案 0 :(得分:2)
我不确定你想要什么样的输出......
你可以这样做
QA_NEW
会给你
1 3
1 4
1 4
6 9
答案 1 :(得分:1)
%d format: a number is required, not numpy.ndarray
基本上你不能在对象/类/你有什么用途上使用格式字符串;它期待一个数字,而不是数字数组
将数组转换为可打印的字符串。同样,你不能真正保存文件中的整数,只保存文件中的字符串。
您要做的是获取数组中的每一行并将其写入文件,类似于:
to_write = ''
for small_list in list_of_lists:
to_write += ''.join(small_list, ',') + "\n"
my_file.write(to_write)
答案 2 :(得分:1)
这个问题有一个旧线程
Saving numpy array to csv produces TypeError Mismatch
如果您检查,您的阵列是导致问题的3D阵列
<强> 1。如果您将其翻译为2D,则可以使用
将numpy导入为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。如果你一次写一行,它也会起作用
但这会有回读的问题
我的建议,把它写成dict / json并在阅读后将其转换为numpy