Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy数组的格式化输出_Python_Numpy_Format - Fatal编程技术网

Python numpy数组的格式化输出

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],[

我有两个(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],[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