配列= 3つの列とその中にデータを含む無制限の量の行を持つある種のリスト。
Volume = array[0][2]
counter = 0
for i in array:
if Volume == array[i][2]: #<------ why is this line a problem?
counter += 1
これは古典的な間違いです。あなたの場合のi
はすでにarray
からの要素(つまり別のリスト)、notarray
のインデックス(not int
)、したがって
if Volume == i[2]:
counter += 1
少なくとも Pythonチュートリアル の最初までは必ず行ってください。これは非常にシンプルで基本的なことです。
また、命名規則に従うことをお勧めします。変数は通常、小文字です(volume
ではなく、Volume
)。この場合、i
は誤解を招きます。 row
またはelem
の方がはるかに適しています。
また、これは頻繁に発生する可能性があるため、リストのスライスにはアクセスできないことに注意してください(ただし、配列にはアクセスできます)。
import numpy as np
integerarray = np.array([33,11,22], dtype=int)
integerlist = [33,11,22]
indexArray = [1,2,0] # or equivalently, an array, e.g. np.argsort(integerlist)
print(integerarray[indexArray]) ## works fine
print(integerlist[indexArray]) ## triggers: TypeError: list indices must be integers or slices, not list
これがお役に立てば幸いです。偶然にもfloat配列に変換する必要がありました。そうしないと、オブジェクトは間違った型のままになります。