使用numpy numpy获取错误以将矩阵保存在txt文件中

我写了这段代码来制作一个数组=>

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)

2 years ago

这个问题有一个旧线程

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

2 years ago

我不确定你想要什么样的输出......

你可以这样做

F = open('test.txt', 'w')
for i in a:
    for j in i:
        line = '%s \t %s \n'%(j[0], j[1])
        F.write(line)

F.close()

会给你

1 3

1 4

1 4

6 9

2 years ago

%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)