array = een soort lijst met 3 kolommen en een onbeperkt aantal rijen met daarin gegevens.
Volume = array[0][2]
counter = 0
for i in array:
if Volume == array[i][2]: #<------ why is this line a problem?
counter += 1
Antwoord 1, autoriteit 100%
Dit is een klassieke fout. i
is in jouw geval al een element uit array
(dwz een andere lijst), nieteen index van array
( geeneen int
), dus
if Volume == i[2]:
counter += 1
Je kunt de Python-zelfstudiebekijken. Probeer ook dit:
for i in array:
print (i)
En kijk wat je krijgt!
Ik zou ook adviseren om vast te houden aan naamgevingsconventies: variabelen zijn normaal gesproken kleine letters (Volume
, niet Volume
). In dit geval is i
misleidend. row
of elem
zou veel geschikter zijn.
Antwoord 2, autoriteit 38%
Ook, aangezien dit vaak kan gebeuren, moet u er rekening mee houden dat u geen toegang hebt tot segmenten van lijsten (maar wel voor een array):
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
Ik hoop dat dit helpt.
Het overkwam me zelfs dat ik moest converteren naar een float-array, anders zou het object van het verkeerde type blijven.