我有一个大小为M的numpy数组,想要将所有这些元素写入文本文件
每行只写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< N案例:
2.00E-3 4.000E-4(no newline)
所有元素都是浮点数,必须以科学格式编写,并带有四个空格的分隔符(该数字可能会有所不同)。
答案 0 :(得分:0)
如果您的阵列不是很大,您可能能够围绕此解决方案:
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)