Python numpy数组元素系列的格式化字符串
这对我来说似乎微不足道,但我仍然缺少一种高效且“干净”的方法,无法将属于numpy数组的一系列元素(如Python numpy数组元素系列的格式化字符串,python,arrays,numpy,formatted-text,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= '%1
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:只有长度为1的数组才能转换为Python标量
或:
给出:TypeError:需要浮点参数,而不是numpy.ndarray
。
我尝试过迭代器,但没有成功
当然,当有几个元素要打印时,这很有趣
那么:如何将numpy数组上的迭代和字符串格式的方式结合起来?您可以将其转换为元组:
formattedline = '%10.6f %10.6f %10.6f' % ( tuple(aa[ii,:]) )
在更一般的情况下,您可以使用连接
:
formattedline = ' '.join('%10.6f'%F for F in aa[ii,:] )
如果要将整个数组写入文件,请使用np.savetxt:
np.savetxt(file1, aa, fmt = '%10.6f')
fmt
参数可以是单一格式,也可以是一系列格式,或者类似于字符串的多格式
'%10.6f %5.6f %d'
... 谢谢但是如果我不同时保存整个阵列呢。。。所以,如果我要添加数组切片和一些文本,那么我认为@hayden的建议是最好的。在引擎盖下,np.savetxt
调用fh.write(asbytes(格式%tuple(行)+换行))
。(在Python2中,asbytes=str
)这很好而且有效!:)。。。所以第二个解决方案实际上是迭代numpy数组,非常好。。。。但是,添加一个字符串:formattedline='%4s%10.6f%10.6f%10.6f%'(string1,(tuple(aa[ii,:]))
给出了TypeError:需要浮点参数,而不是tuple
,我不明白why@gluuke您需要添加它们:(string1,)+tuple(aa[ii,:])
。
'%10.6f %5.6f %d'