7

这对我来说似乎微不足道,但我仍然缺少一种有效且“干净”的方式来将一系列属于 numpy 数组(as aa[:,:])的元素插入到要打印/写入的格式化字符串中。事实上,扩展的逐元素规范语法如下:

formattedline= '%10.6f  %10.6f  %10.6f' % (aa[ii,0], aa[ii,1], aa[ii,2]) 
file1.write(formattedline+'\n')

在工作中。

但我还没有找到任何其他更短的解决方案,因为:

formattedline= '%10.6f  %10.6f  %10.6f' % (float(aa[ii,:]))
file1.write(formattedline+'\n')

当然给出:TypeError: only length-1 arrays can be converted to Python scalars

或者:

formattedline= '%10.6f  %10.6f  %10.6f' % (aa[ii,:]) 
file1.write(formattedline+'\n')

给出:TypeError: float argument required, not numpy.ndarray。我尝试过使用迭代器,但没有成功。

当然,当要打印多个元素时,这很有趣。

那么:我怎样才能结合迭代numpy数组和字符串格式的时尚?

4

2 回答 2

6

您可以将其转换为元组:

formattedline = '%10.6f  %10.6f  %10.6f' % ( tuple(aa[ii,:]) )

在更一般的情况下,您可以使用join

formattedline = ' '.join('%10.6f'%F for F in aa[ii,:] )
于 2012-10-05T11:04:18.227 回答
2

如果要将整个数组写入文件,请使用 np.savetxt:

np.savetxt(file1, aa, fmt = '%10.6f')

参数可以是单一格式,fmt也可以是一系列格式,也可以是多格式字符串,如

'%10.6f  %5.6f  %d'
于 2012-10-05T11:32:02.550 回答