Python numpy数组的格式化输出
我有两个(numpy)数组要写入文件。第一个是长度为n的整数的一维数组,第二个是尺寸为nx3的二维数组。输出应根据(I8,TR5,3E14.6)TR5=插入5个空格进行格式化。我可以在所有n个元素上做一个循环,但这感觉不像是pythonic。我已尝试使用numpy.savetxt()。它只适用于二维数组,但我不知道如何包含整数和空格。有什么建议吗Python numpy数组的格式化输出,python,numpy,format,Python,Numpy,Format,我有两个(numpy)数组要写入文件。第一个是长度为n的整数的一维数组,第二个是尺寸为nx3的二维数组。输出应根据(I8,TR5,3E14.6)TR5=插入5个空格进行格式化。我可以在所有n个元素上做一个循环,但这感觉不像是pythonic。我已尝试使用numpy.savetxt()。它只适用于二维数组,但我不知道如何包含整数和空格。有什么建议吗 import numpy as np fout = "outfile.txt" coord = np.array([[0.0,0.0,0.0],[
import numpy as np
fout = "outfile.txt"
coord = np.array([[0.0,0.0,0.0],[1.0,1.0,1.0],[2.0,2.0,2.0]],float)
nodnr = np.array([[1,2,3]],int)
np.savetxt(fout,coord,delimiter=" ",fmt="%14.6E")
输出应如下所示:
1 0.000000E+00 0.000000E+00 0.000000E+00
2 1.000000E+00 1.000000E+00 1.000000E+00
3 2.000000E+00 2.000000E+00 2.000000E+00
将两个数组合并为一个dtype
float
arr = np.column_stack([nodnr.T, coord])
然后使用以下命令调用np.savetxt
:
屈服
1 0.000000E+00 0.000000E+00 0.000000E+00
2 1.000000E+00 1.000000E+00 1.000000E+00
3 2.000000E+00 2.000000E+00 2.000000E+00
Thx,这(大部分)已经分类了。TR5只能在整数和第一个浮点之间添加一次。我应该在那里打印一个5-whitespace长字符串吗?顺便说一句,nodnr.T是什么意思?在这种情况下,您可以使用多格式字符串而不是格式列表(请参见上面的编辑)
nodnr.T
是nodnr
的转置。由于nodnr.shape
是(1,3)
,因此它是一个具有一行三列的二维数组。要使用coord
对其进行列堆栈,我们需要使其成为一个具有三行一列的二维数组。这就是转置所做的。Thx x2,现在我知道了:)
1 0.000000E+00 0.000000E+00 0.000000E+00
2 1.000000E+00 1.000000E+00 1.000000E+00
3 2.000000E+00 2.000000E+00 2.000000E+00