私のデータファイルをタプルない、整数でなければなりませんあなたは私が-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']]
で次のようになります把握できない。 どうすればこの問題を解決できますか?
おかげ
'data.dtype'とは何ですか? – Divakar
'np.asarray()'の出力を使用します –
@Divakarオブジェクトです –