1

多数の .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']
4

3 に答える 3

3

エラーメッセージから明らかなように、問題は空の文字列またはスペースにあるようです

ValueError: could not convert string to float:

機能させるには、マップをリスト内包表記に変換します

gene_array=[float(e) for e in gene_array if e]
phen_array=[float(e) for e in phen_array if e]

空文字列による手段

float(" ")またはfloat("")値エラーが発生するため、または内のアイテムのいずれgene_arrayphen_arrayにスペースがある場合、float への変換中にエラーがスローされます。

次のような空の文字列には多くの理由が考えられます

  • 空または空行
  • 先頭または末尾の空白行
于 2013-01-03T19:14:35.707 に答える
0

-エラー メッセージには、それが問題であることを示唆するものは何もありません。最も可能性の高い理由は、gene_arrayおよび/またはphen_array空の文字列 ( '') が含まれていることです。

ドキュメントに記載されているように、linecache.getline()

エラー時に返さ''れます (検出された行には終了改行文字が含まれます)。

于 2013-01-03T19:10:33.803 に答える
0

問題は間違いなく負の兆候ではありません。Python は問題なく負符号の文字列を変換します。float RegEx に対して各エントリを実行し、それらがすべてパスするかどうかを確認することをお勧めします。

于 2013-01-03T19:11:59.227 に答える