2016-08-05 8 views
0

7行目から数値の行を読み込み、それ以上のデータがなくなるまでリストにコンパイルして標準偏差と%rmsを計算しようとしていますリスト。簡単なようだが、私はエラーを取得しておいてください。ここではナンシースタンダード計算:TypeError:フレキシブルタイプのreduceを実行できません

Traceback (most recent call last): 
    File "rmscalc.py", line 21, in <module> 
    std = np.std(values) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/fromnumeric.py", line 2817, in std 
    keepdims=keepdims) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/_methods.py", line 116, in _std 
    keepdims=keepdims) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/_methods.py", line 86, in _var 
    arrmean = um.add.reduce(arr, axis=axis, dtype=dtype, keepdims=True) 
TypeError: cannot perform reduce with flexible type 

は、以下の私のコードです:

import numpy as np 
import glob 
import os 

values = [] 
line_number = 6 

road = '/Users/allisondavis/Documents/HCl' 
for pbpfile in glob.glob(os.path.join(road, 'pbpfile*')): 
    lines = open(pbpfile, 'r').readlines() 
    while line_number < 400 : 
     if lines[line_number] == '\n': 
      break 
     else: 
      variables = lines[line_number].split() 
      values.append(variables) 
      line_number = line_number + 3 
      print values 

a = np.asarray(values).astype(np.float32) 
std = np.std(a) 
rms = std * 100 
print rms 

編集:それは(間違っている - なぜまだわからない)実効生成するが、次のエラーメッセージを紛らわしいです:私はカウントが高いことが必要(ちょうどそれがどんなに大きなファイル全体を取得しないだろうことを確認するために400を選んだ)

Traceback (most recent call last): 
    File "rmscalc.py", line 13, in <module> 
    if lines[line_number] == '\n': 
IndexError: list index out of range 

答えて

1

values文字列配列ですので、です。 astypeを使用してaを数値型に変換します。たとえば、

a = np.asarray(values).astype(np.float32) 
std = np.std(a) 
+0

どうすればよいですか?いくつかのサンプルコードを提供できますか? – alli

+0

私は例を追加しました。私の答えがあなたを助けたらそれを受け入れることを検討してください。 – Priyatham

+0

それは助けてくれましたが、私は回線上でループしてすべての情報を取得することに問題があります。これは最初の行からのみ読み込んでいるようですが、これを修正する方法は分かりますか?私は自分の質問を編集します – alli

関連する問題