首页 文章

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

提问于
浏览
0

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

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

  • 1

    这个问题有一个旧线程

    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

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

    你可以这样做

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

相关问题