python - 如何在 Numpy 中使用 savetxt 有两个前导空格

标签 python arrays numpy fortran

我正在用 Python 准备一个要在 Fortran 中读取的文件。该文件如下所示:

 0.0000000E+00  0.0000000E+00  0.0000000E+00  1.5000000E-01
 1.0193980E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
 2.0387960E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
 3.0581940E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
 4.0775920E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
 5.0969900E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
 6.1163880E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
 7.1357860E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
 8.1551840E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01

它以 1 个前导空格开始,然后列之间的间距变为 2 个空格。我拥有的 Fortran 可执行文件(无法访问源代码)读取和写入 E15.7 格式,这意味着我需要两个前导空格,如下所示:

  0.0000000E+00  0.0000000E+00  0.0000000E+00  1.5000000E-01
  1.0193980E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
  2.0387960E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
  3.0581940E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
  4.0775920E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
  5.0969900E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
  6.1163880E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
  7.1357860E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01
  8.1551840E-02  0.0000000E+00  0.0000000E+00  1.5000000E-01

生成该文件的 python 脚本如下:

np.savetxt(fpath, data, fmt='%14.7E')

如果我使用fmt='%15.7E',前导空格将变为两个,但其余空格将为 3 个。

最佳答案

使用更复杂的格式字符串,您可以这样做:

代码:

np.savetxt(fpath, data, fmt=' %14.7E' * data.shape[1])

测试代码:

import numpy as np
fpath = 'test_data'
data = np.array([[1.0, 1.1, 12.0]])
np.savetxt(fpath, data, fmt=' %14.7E' * data.shape[1])

结果:

  1.0000000E+00  1.1000000E+00  1.2000000E+01

关于python - 如何在 Numpy 中使用 savetxt 有两个前导空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49021027/

相关文章:

python - 如何按元素移动数据帧以填充 NaN?

python - 是否有 Hadley 的 ddply 用于 python 的实现?

java - 查找数组中的数字

arrays - Swift 2.0 数组初始化

arrays - 属性错误: 'numpy.ndarray' object has no attribute 'toList'

python - C++ vs python numpy复杂数组的性能

python - ValueError : Expected 1D or 2D array, 得到了 0D 数组

python - 使用 ConfigParser 读取没有节名的文件

Python:使用 def 和 for 循环导出列表中一系列值的多个数组

python - 类实例实现,初始化实例——来自SICP python