2017-07-04 15 views
-2

私はこのコードを、Iris-versicolorに等しいかどうかに応じて、1または0に2D配列のセルの値を変更することを目的としています。パーセプトロンの例の範囲外のリストインデックス

for row in data: 
    if (row[4] == "Iris-versicolor"): 
     row[4] == 1 
    else: 
     row[4] == 0 

問題は、それは私に"IndexError : list index out of range"を言ってif文の行にエラーを与えることです。私は、私がチェックし、私のデータ配列が5列目(インデックス付き4)を持っていることを除いて、存在しないセルにアクセスしようとしているというエラーを理解しています。それ以外の場合はエラーが発生します。すべてのヘルプは大歓迎です

Mindoo

編集:ここでは私が使用しているデータベースへのリンクがあります。 よく知られているIris databaseです。

+0

投稿可能なコードはありますか? – 23k

+0

あなたはあなたの 'データ 'を共有してもらえますか? –

+0

@ 23kだから、私は.csvファイルのデータを解析するコードを投稿することができましたが、エラーが発生する前にデータ配列を出力することで、解析中に何も間違っていないことを確認しました。私はそれが欲しかった。 – mindoo

答えて

3

てみデータがリスト

for row in data: 
    if len(row) >= 4: 
     if (row[4] == "Iris-versicolor"): 
      row[4] = 1 
     else: 
      row[4] = 0 

チェックのリストがある場合は、行[4] = 0

+0

ニースキャッチ!私はその愚かなエラーに気付かなかった。残念ながら、それは私の問題を解決しませんでした。私のエラーは、私が提供したコードスニペットの2行目に記載されています。 – mindoo

+0

前にすべてのデータを印刷しようとしましたか? '行内のデータ: 印刷行[0] 印刷行[1] 印刷行[2] 印刷行[3] 印刷行[4]' – Rence

0

row[4] = 1 

row[4] == 1 

を変更するには行に5要素以上の要素がある場合それにアクセスする。