numpy.ndarray 'объект не имеет атрибута' добавить
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)
СПИСОК ВЕРСИИ
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)
Это продолжает вызывать ошибку у объекта numpy.ndarray нет атрибута append. Я хочу иметь возможность добавлять пользовательские данные в массив test11. Прекрасно работает, не делая test11 массивом numpy. Но я хочу иметь возможность ограничить размер числа до 20. Есть идеи? Пожалуйста, сделайте это просто.
КОД ОШИБКИ: Отслеживание (последний вызов последний): строка 10, в test11.append (данные) AttributeError: объект 'numpy.ndarray' не имеет атрибута 'append'
Ответы
Это работает. Я снова изменил несколько строк и выделил их.
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)
Версия списка.
# 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)
Это настолько сжато, насколько я мог сделать, без изменения всего этого и сохраняя его похожим на то, с чего вы начали.
Теперь пользователь не может использовать число больше 20 или любые буквы, иначе появится ошибка.
Массивы Numpy не имеют метода добавления, они должны быть созданы с нужной формой и длиной. Итак, в вашем случае лучшим способом было бы составить список, добавить значения, а затем создать массив:
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)
Вы можете заменить строку на np.append
:
np.append(test11,data)
Но добавление в массив numpy дороже, чем добавление в список. Я бы предложил использовать list
структуру append
и в конце преобразовать ваш список в массив numpy, используяnp.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)
total = test11.sum()
print("The sum of all", total)