【发布时间】:2013-01-03 19:07:04
【问题描述】:
我需要读入大量 .txt 文件,每个文件都包含一个小数(有些是正数,有些是负数),并将它们附加到 2 个数组(基因型和表型)中。随后,我希望在 scipy 中对这些数组执行一些数学运算,但是负号('-')会导致问题。具体来说,我无法将数组转换为浮点数,因为“-”被读取为字符串,导致以下错误:
ValueError: could not convert string to float:
这是我目前编写的代码:
import linecache
gene_array=[]
phen_array=[]
for i in genotype:
for j in phenotype:
genotype='/path/g.txt'
phenotype='/path/p.txt'
g=linecache.getline(genotype,1)
p=linecache.getline(phenotype,1)
p=p.strip()
g=g.strip()
gene_array.append(g)
phen_array.append(p)
gene_array=map(float,gene_array)
phen_array=map(float,phen_array)
在这一点上我相当肯定是负号导致了问题,但我不清楚为什么。我使用 Linecache 是这里的问题吗?有没有更好的替代方法?
结果
print gene_array
是
['-0.0448022516321286', '-0.0236187263814157', '-0.150505384829925', '-0.00338459268479522', '0.0142429109897682', '0.0286253352284279', '-0.0462358095345649', '0.0286232317578776', '-0.00747425206137217', '0.0231790239373428', '-0.00266935581919541', '0.00825077426011094', '0.0272744527203547', '0.0394829854063242', '0.0233109171715023', '0.165841084392078', '0.00259693465334536', '-0.0342590874424289', '0.0124600520095644', '0.0713627590092807', '-0.0189374898081401', '-0.00112750710611284', '-0.0161387333242288', '0.0227226505624106', '0.0382173405035751', '0.0455518646388402', '-0.0453048799717046', '0.0168570746329513']
【问题讨论】:
-
您必须显示您尝试读取的实际数据。像
"-123.45"这样的字符串可以float很好,但"- 123.45"不能。 -
你能打印
gene_array和phen_array吗?也许您的文本文件是空的,而您正在尝试float一个空字符串? -
我怀疑这是您的实际代码 - 在当前形式下,当您在循环内定义变量时,它将在
for i in genotype上引发 UnboundLocalError;你也从来没有在任何地方使用i或j... -
@J R:你能不能也打印一下
phen_array? -
我可以
map(float,gene_array)很好...