Python 2.7 将M个numpy数据元素写入一个文件,每行有N个元素

Python 2.7 将M个numpy数据元素写入一个文件,每行有N个元素,python-2.7,numpy,pandas,Python 2.7,Numpy,Pandas,我有一个大小为M的numpy数组,希望将所有这些元素写入一个文本文件 每行NN,我们可以有: 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

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

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)

所有元素都是浮点数,必须以科学格式写入,并使用一个由四个空格组成的分隔符,这些空格的数目可能会有所不同。

如果数组不太大,您可能可以基于此找到解决方案:

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)