数据被读取为字符串而不是浮点数

时间:2019-06-06 02:29:46

标签: string floating-point

我不完全理解的Pytorch程序产生了一个输出,并将其写入了weight.txt。我正在尝试根据此输出进行一些进一步的计算。 我希望将输出解释为长度为3的列表,每个条目都是长度为240的浮点列表。

我用它来加载数据

w=open("weight.txt","r")
weight=[]
for number in w:
    weight.append(number)

print(len(weight))产生3。到目前为止,一切都很好。

但是,然后print(len(weight [weight [0]))得出6141。这很糟糕!

经过仔细检查,这是因为权重[0]是逐个字符而不是逐个读取的。因此,例如,print(weight [0] [0])产生-而不是-1.327657848596572876e-01。这些数字由单个空格分隔,这些空格也被视为字符。

我该如何解决?

谢谢

编辑:我尝试制作修复功能:

def repair(S):
    numbers=[]
    num=''
    for i in range(len(S)):
        if S[i]!=' ':
            num+=S[i]
        elif S[i]==' ':
            num=float(num)
            numbers.append(num)
            num=''
        elif i==len(S)-1:
            num+=S[i]
            num=float(num)
            numbers.append(num)
    return numbers

不幸的是,print(repair('123 456'))返回[123.0],而不是所需的[123.0 456.0]。

1 个答案:

答案 0 :(得分:0)

您尚未告诉我们输入文件的外观,因此很难给出确切的答案。但是,假设它看起来像这样:

123 312.8 12
2.5 12.7 32

以下程序:

w=open("weight.txt","r")
weight=[]
for line in w:
    for n in line.split():
       weight.append(float(n))
print weight

将打印:

[123.0, 312.8, 12.0, 2.5, 12.7, 32.0]

我想这更接近您要寻找的东西吗?

问题的症结在于程序中的for number in w仅遍历每一行:您必须有另一个循环才能将该行拆分为它的组成部分,然后进行适当的转换。