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