numpy.ndarray 'oggetto non ha attributo' append
import numpy as np
Student1= [1,2]
test11= np.array([])
np.clip(0,1,20)
NOF=int(2)
print("Enter test score, students name are (1,2,3, etc): ")
for i in range(NOF):
data=int(input())
test11.append(data)
total=0
for value in test11:
total=total+value
print("The sum of all", total)
VERSIONE ELENCO
import numpy as np
Student1= [1,2]
test11= []
NOF=int(2)
print("Enter test score, students name are (1,2,3, etc): ")
for i in range(NOF):
data=int(input())
test11.append(data)
total=0
for value in test11:
total=total+value
print("The sum of all", total)
Ciò continua a visualizzare l'errore "numpy.ndarray". L'oggetto non ha l'attributo "append". Voglio essere in grado di aggiungere i dati dell'utente, all'array test11. Funziona bene senza rendere test11 un array numpy. Ma voglio essere in grado di limitare la dimensione del numero a 20. Qualche idea? Plz lo rende semplice.
CODICE DI ERRORE: Traceback (ultima chiamata più recente): riga 10, in test11.append (data) AttributeError: l'oggetto 'numpy.ndarray' non ha attributo 'append'
Risposte
Questo sembra funzionare. Ho cambiato di nuovo alcune righe e le ho contrassegnate.
import numpy as np
Student1= [1,2]
test11= np.array([0])
NOF=int(2)
print("Enter test score, students name are (1,2,3, etc): ")
data = None
while data is None: # Remove this if you want the program to end if an error occurres.
for i in range(NOF):
try: # Be sure the input is a int.
data=np.array([int(input())])
if data > 20: # Be sure the input is <= 20.
data = None # If greater then 20. Turn data into None
test11 = np.array([0]) # Empty the array.
print("Error")
break # Then break out of the loop
test11 = np.append(data, test11)
except ValueError:
data = None # If it is not a int, data will trun into None
test11 = np.array([0]) # Empty the array.
print("Error")
break
if data is not None: # If data is not None then find the sum.
total=0
for value in test11:
total = test11.sum() # Use the sum fuction, though total=total+value will also work.
print("The sum of all", total)
Versione elenco.
# import numpy as np
Student1= [1,2]
test11= []
NOF=int(2)
print("Enter test score, students name are (1,2,3, etc): ")
data = None # Assign ahead of time.
while data is None: # Remove this if you want the program to end if an
error occurres.
for i in range(NOF):
try: # Be sure the input is a int.
data=int(input())
if data > 20: # Be sure the input is <= 20.
data = None # If greater then 20. Turn data into None
test11.clear() # Clear the list if an error occurres.
print("Error")
break # Then break out of the loop
test11.append(data)
except ValueError:
data = None # If it is not a int, data will trun into None
test11.clear() # Clear the list if an error occurres.
print("Error")
break
if data is not None: # If data is not None then find the sum.
total=0
for value in test11:
total=total+value
print("The sum of all", total)
Questo è il più compatto possibile, senza cambiare l'intera cosa e mantenendolo simile a quello con cui hai iniziato.
Ora l'utente non può utilizzare un numero superiore a 20 o lettere o verrà visualizzato un errore.
Gli array Numpy non hanno il metodo 'append', dovrebbero essere creati con la forma e la lunghezza di cui avrai bisogno. Quindi, nel tuo caso, il modo migliore sarebbe creare un elenco, aggiungere i valori e quindi creare l'array:
import numpy as np
Student1= [1,2]
test11= []
np.clip(0,1,20)
NOF=int(2)
print("Enter test score, students name are (1,2,3, etc): ")
for i in range(NOF):
data=int(input())
test11.append(data)
test11 = np.array(test11)
Puoi sostituire la tua riga con np.append
:
np.append(test11,data)
Ma aggiungere a numpy array è più costoso che aggiungere a un elenco. Suggerirei di utilizzare la list
struttura con append
e alla fine convertire il tuo elenco in array numpy usandonp.array
Ecco una versione dell'elenco:
import numpy as np
Student1= [1,2]
test11= []
np.clip(0,1,20)
NOF=int(2)
print("Enter test score, students name are (1,2,3, etc): ")
for i in range(NOF):
data=int(input())
test11.append(data)
test11 = np.array(test11)
total = test11.sum()
print("The sum of all", total)