numpy.ndarray 'oggetto non ha attributo' append

Aug 19 2020
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

1 ThreePoint14 Aug 19 2020 at 06:50

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.

JoãoVitorBarbosa Aug 19 2020 at 06:22

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)
Ehsan Aug 19 2020 at 06:24

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 liststruttura con appende 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)