【发布时间】:2017-05-18 16:11:29
【问题描述】:
首先让我说我对 Python 一无所知,但我正在努力学习(似乎主要是通过挣扎)。我环顾了这个网站并试图拼凑代码来做我需要的事情,但我一直遇到问题。首先,我需要将一个包含 2 列和 512 行字符串的文件转换为浮点数,然后将它们放入 512x2 数组中。我检查第一列(所有行)是否有负值。如果为负,则添加 512。然后我需要按数字顺序重新排序行并写入/保存新数组。
关于我的第一个问题,转换为浮点数并将浮点数放入数组中。我有这段代码,是我根据别人的问题制作的:
with open("binfixtest.composite") as f:
f_values = map(lambda l: l.strip().split(' '), f)
print f_values
newarray = [map(float, v) for v in f_values]
文件原格式:
-91. 0.444253325
-90. 0.883581936
-89. -0.0912338793
f_values 的新格式:
['-91. 0.444253325'], ['-90. 0.883581936'], ['-89. -0.0912338793']
我收到了错误:
Traceback (most recent call last):
File "./binfix.py", line 10, in <module>
newarray = [map(float, v) for v in f_values]
ValueError: invalid literal for float(): -91. 0.444253325
我似乎无法修复。如果我不转换为浮点数,当我尝试将 512.0 添加到负行时,它会给我错误TypeError: cannot concatenate 'str' and 'float' objects
非常感谢任何帮助,因为我在这里完全一无所知。
【问题讨论】:
-
您将拆分为 3 个空格,但空格数是可变的。用
.split()就行了 -
当您说“按数字顺序重新排列行”时请澄清。您是指第一项还是第二项?