我不完全理解的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]。
答案 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
仅遍历每一行:您必须有另一个循环才能将该行拆分为它的组成部分,然后进行适当的转换。