2016-05-04 12 views
1

リストのインデックスがインデックスの数を超えていないにもかかわらず、なぜこのエラーが発生するのかは分かりません。このエラーを取得したコードは以下の通りです:(?)明白な理由でリストのインデックスが範囲外であるnumpy

normalisedFaces = np.array([]) 
    for f in range(len(vertextNormalIndices)): 
     nF1 = vecNormals[vertextNormalIndices[f][0][0]] 
     nF2 = vecNormals[vertextNormalIndices[f][1][0]] 
     nF3 = vecNormals[vertextNormalIndices[f][2][0]] 
     normalisedFaces = np.hstack((normalisedFaces,(np.add(nF1,np.add(nF2,nF3))/ 3))) 
     print(f) 
    time.sleep(3) 
    print(normalisedFaces[f]) 

私の唯一の推測では、私はこの例では、配列の最大サイズの終わりに達しています、ループは529の範囲を持っているということですが、私のようなものにループを変更する場合は、私が519に到達したときにエラーがアップします:

for f in range(len(vertextNormalIndices)-200): 

が、それは範囲の終わりに到達した(ので、この場合は:329)。

これを修正するにはどうすればよいですか?可能であれば、私はこのループを入れ子にする必要がなく、各配列のサイズを例えばに分割する必要があります。 vertexNormalIndicesの enter image description here

最後の8つの指標:が(だから、取得する任意の指導を大幅に

をいただければ幸い300

%最大==私はここでエラーのスクリーンショットを添付しました最初の各行例えば278の数、195、281)コメントパー

enter image description here

+0

完全なトレースバックといくつかの入力データの例を追加できますか?一部の背景で – syntonym

+0

、 'vertextNormalIndices'は波面.objファイルの 'Faces'で満たされたnumpy配列です。 [[[10,10,10]、[16,16,16]、[13,13,13]]、[[..]、[..]、[..]]のようになります。 ...] –

+0

失敗した要素に要素が含まれていないようです - 'f [0] [0]'は 'IndexError'を引き起こしています - その内容を確認できますか?上記のように – snakecharmerb

答えて

2

、およびヨーヨーを見てウルトレースバックは、エラーは、この行である: nF1 = vecNormals[vertextNormalIndices[f][0][0]]


だから、エラーvertextNormalIndices[519]またはvertextNormalIndices[519][0]のいずれかが空のリストであることでなければならない - ループ内でそれらをプリントアウトしてみてください。

リストを反復するために「Python的」な方法は、直接それを行うことで、あなたはまた、各要素のインデックスを取得する必要がある場合、あなたはenumerateを使用する必要があります:

normalisedFaces = np.array([]) 
for f, vertexNormalIndex in enumerate(vertextNormalIndices): 
    nF1 = vecNormals[vertextNormalIndex[0][0]] 
    nF2 = vecNormals[vertextNormalIndex[1][0]] 
    nF3 = vecNormals[vertextNormalIndex[2][0]] 
    normalisedFaces = np.hstack((normalisedFaces,(np.add(nF1,np.add(nF2,nF3))/ 3))) 
    print(f) 
time.sleep(3) 
print(normalisedFaces[f]) 
余談として

+0

、\t これはループ内にない最後の10個の要素です。私は519/529に達します。 –

+0

私は上記を試しましたが、うまくいきません。 –

+0

それはvertextNormalIndicesです.-私は、オブジェクトファイルがインデックス1から始まるベクトル法線を参照していることに気付きました。/529、これは、サイズが1より大きいインデックスを持つベクトル法線の値を持ちます。 1/529に簡単に達して失敗する可能性があります。ありがとうございます –

関連する問題