【问题标题】:Convert a column of a text file to scientific notation将文本文件的一列转换为科学计数法
【发布时间】:2019-08-26 12:36:09
【问题描述】:

我有一个包含一列和许多原始文件的文本文件 (BBB.txt)。我想将所有数字转换为科学计数法。我正在尝试如下:

z= loadtxt ('BBB.txt')
for i in z:
    with open ('ff.txt','w') as h:
        y=np.format_float_scientific(z)
        h.write("\n".join(map(lambda z: '%f' % z, y)))

我会遇到错误“只有 size-1 的数组可以转换为 Python 标量”。这里有什么问题?

文本文件如下所示,但包含更多原始文件:

0.000000
0.261869
0.980796
2.119419
3.218744
3.875440
-38.159080
-54.630055
-69.909509

【问题讨论】:

  • x 在这里指的是什么?
  • 这是错误的。它应该是“z”
  • 当函数需要单个值但您传递一个数组时,返回错误“只有长度为 1 的数组可以转换为 Python 标量”。那么请您添加有关您的文本文件内容的更多信息吗?
  • 我在问题中添加了一个示例。
  • 试试y=np.format_float_scientific(z[0]),我猜这里的 z 仍然是一个数组,会导致错误。编辑:这是错误的。 z 是整个文件

标签: python numpy text scientific-notation


【解决方案1】:

您对 x,y,z,i 中的命名感到困惑。我总是建议你对变量使用长名称。下面的脚本会帮助你

import numpy as np
z = open('BBB.txt')
for i in z:
    with open ('ff.txt','a') as h:
        i=float(i)
        y=np.format_float_scientific(i)
        h.write(f"{y}\n")

根据您的代码风格,您应该使用 append a 写入文件而不是 w

【讨论】:

  • @Nerd 对人们了解您的问题得到解答很重要。接受此帖子作为已回答并点赞。
【解决方案2】:

我会让你自己决定你想用科学记数法做什么。这会将列转换为科学计数法。

import numpy as np

z= np.loadtxt ('BBB.txt')
with open("ff.txt", 'w') as file:
    for i in z:
        y=np.format_float_scientific(i)
        file.write("{}\n".format(y))

您尝试转换整个文件z。而python告诉你这是不可能的。 z 是一个大小大于 1 的数组

【讨论】:

  • 他想写成一个文件。您的代码中缺少部分。
  • 已添加。不是问题的一部分。
猜你喜欢
  • 1970-01-01
  • 2018-12-12
  • 2020-06-01
  • 1970-01-01
  • 2012-06-22
  • 2015-12-27
  • 1970-01-01
  • 2019-07-09
  • 1970-01-01
相关资源
最近更新 更多