2017-11-14 13 views
0

私のデータファイルをタプルない、整数でなければなりませんあなたは私が-1として重みを持つ2つのエントリのために、これらは外れ値であり、私はそれらを削除することを見ることができるように、このPython | numpy |リストインデックスは

#weight, height and gender 
45 145 f 
89 154 m 
56 163 m 
-1 165 f 
65 175 m 
-1 125 m 
65 169 f 

のように見えます。外れ値であるエントリを削除します。 だから私はnp.loadtxtのように、numpyのを使用してこのファイルを読もうと、それ用のコードは私がデータを反復処理関数を定義して、新しいデータを返す外れ値を除去するために

data = np.loadtxt('whData.dat',dtype=np.object,comments='#',delimiter=None) 
X = data[:,0:2].astype(np.float) 
y = data[:,2] 
X = X.T 
... 

のようになります異常値がない。

def remove_outlier2(data): 
    non_outlier = [] 
    for x in data: 
     if x[0] != '-1': 
      non_outlier.append(x) 
    return non_outlier 

と私はそれは私が解決することはできませんよ

data = np.loadtxt('whData.dat',dtype=np.object,comments='#',delimiter=None) 
data = remove_outlier2(data) 
np.asarray(data) 
X = data[:,0:2].astype(np.float) 
y = data[:,2] 
X = X.T 
... 

しかし、今、私はこのエラーを取得する、である、ファイルからデータをロードした後、これを呼び出します。

Traceback (most recent call last): 

    File "<ipython-input-2-2aec95447a79>", line 1, in <module> 
    runfile('C:/Users/xxx/py_workspace/pattern/whExample.py', wdir='C:/Users/xxx/py_workspace/pattern') 

    File "C:\Users\xxx\AppData\Local\Continuum\Anaconda2\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 699, in runfile 
    execfile(filename, namespace) 

    File "C:\Users\xxx\AppData\Local\Continuum\Anaconda2\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 74, in execfile 
    exec(compile(scripttext, filename, 'exec'), glob, loc) 

    File "C:/Users/xxx/py_workspace/pattern/whExample.py", line 79, in <module> 
    X = data[:,0:2].astype(np.float) 

TypeError: list indices must be integers, not tuple 

私もちょうどファイルからそれを読んだ後にデータを印刷しようとした、そしてそれは、私は「Googleと私は間違っているが、couldnやっているものを見つけることを試みたスパイダー

[['45' '145' 'f'] 
    ['89' '154' 'm'] 
    ['56' '163' 'm'] 
    ['-1' '165' 'f'] 
    ['65' '175' 'm'] 
    ['-1' '125' 'm'] 
    ['65' '169' 'f']] 

で次のようになります把握できない。 どうすればこの問題を解決できますか?

おかげ

+0

'data.dtype'とは何ですか? – Divakar

+2

'np.asarray()'の出力を使用します –

+0

@Divakarオブジェクトです –

答えて

0

だから、最終的にはコメント欄での提案から、私がしなければならなかったすべてはnp.asarrayの出力を(使用している)、それは

data = np.loadtxt('whData.dat',dtype=np.object,comments='#',delimiter=None) 
# reomve outliers 
data = remove_outlier2(data) 
data = np.asarray(data) 

で、物事がうまく働きました。

関連する問題