numpy数组元素系列的格式化字符串

时间:2012-10-05 10:57:23

标签: python arrays numpy formatted-text

对我来说这似乎是微不足道但是我仍然缺少一种有效且“干净”的方式来将一系列属于numpy数组的元素(如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数组和字符串格式化的方式?

2 个答案:

答案 0 :(得分:5)

您可以将其转换为元组:

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

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

formattedline = ' '.join('%10.6f'%F for F in aa[ii,:] )

答案 1 :(得分:2)

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

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

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

'%10.6f  %5.6f  %d'