objeto numpy.ndarray 'não tem atributo' 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)
LISTAR VERSÃO
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)
Isso continua exibindo um erro de objeto 'numpy.ndarray' sem atributo 'append'. Eu quero ser capaz de adicionar dados do usuário ao array test11. Funciona bem sem tornar test11 um array numpy. Mas eu quero ser capaz de limitar o tamanho do número a 20. Alguma ideia? Por favor, torne isso simples.
CÓDIGO DE ERRO: Traceback (última chamada mais recente): linha 10, em test11.append (data) AttributeError: objeto 'numpy.ndarray' não tem atributo 'append'
Respostas
Isso parece funcionar. Mudei algumas linhas novamente e as marquei.
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)
Versão da lista.
# 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)
Este é o mais compactado que pude fazer, sem alterar a coisa toda e mantendo-o semelhante ao que você começou.
Agora o usuário não pode usar um número acima de 20, ou qualquer letra, ou um erro aparecerá.
Matrizes Numpy não possuem o método 'append', elas devem ser criadas com a forma e o comprimento que você precisa. Portanto, no seu caso, a melhor maneira seria fazer uma lista, anexar os valores e, em seguida, criar a matriz:
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)
Você pode substituir sua linha por np.append
:
np.append(test11,data)
Mas anexar a um array numpy é mais caro do que anexar a uma lista. Eu sugeriria usar list
estrutura com append
e, no final, converter sua lista em array numpy usandonp.array
Aqui está uma versão da lista:
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)