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

时间:2017-04-14 15:23:21

标签: python numpy

我已编写此代码以生成数组=>

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将数组保存为文件中的整数?

3 个答案:

答案 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