【问题标题】:Writing M numpy data elements to a file with N elements per line将 M numpy 数据元素写入每行 N 个元素的文件
【发布时间】:2015-03-07 06:25:11
【问题描述】:

我有一个大小为 M 的 numpy 数组,想将所有这些元素写入一个文本文件 每行只写 N 个元素(N N,我们可以:

2.000E-3   4.000E-4   6.4000E-5
7.500E-3   4.100E-4   6.4700E-1
2.100E-3   4.200E-4(no newline)

当数字结束时,我必须开始写另一个类似格式的数字。我还需要处理 N=1 和 M=1 的情况。

2.000E-3(no new line)

或 M

2.00E-3   4.000E-4(no newline)

所有元素都是浮点数,并且必须以科学格式编写,并带有四个空格的分隔符(该数字可能会有所不同)。

【问题讨论】:

    标签: python-2.7 numpy pandas


    【解决方案1】:

    如果您的数组不是很大,您也许可以基于此解决方案:

    import numpy as np
    
    def output_array(a, m):
        n = len(a)
        n_mod_m = n % m
        if n <= m:
            last_row = a
            rows = []
        elif n_mod_m:
            last_row = a[-(n_mod_m):]
            rows = a[:-n_mod_m].reshape(n//m,m)
        else:
            last_row = a[-m:]
            rows = a[:-m].reshape(n-1,m)
    
        def s_row(row):
            return '   '.join(['{:8.3E}'.format(n) for n in row])
    
        if len(rows):
            print '\n'.join([s_row(row) for row in rows])
        print s_row(last_row),
    
    a = np.array([0.002,0.0004,0.000064,0.0075, 0.00041,0.647,0.0021,0.00042])
    output_array(a,3)
    print '(no newline)'
    output_array(a[:1],1)
    print '(no newline)'
    
    output_array(a[:2],4)
    print '(no newline)'
    

    产生:

    2.000E-03   4.000E-04   6.400E-05
    7.500E-03   4.100E-04   6.470E-01
    2.100E-03   4.200E-04 (no newline)
    
    2.000E-03 (no newline)
    
    2.000E-03   4.000E-04 (no newline)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多