numpy.ndarray 'nesnenin özniteliği yok' eki

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)

LİSTE SÜRÜMÜ

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)

Bu, "numpy.ndarray" nesnesinin "append" özniteliği yok hatası vermeye devam ediyor. Test11 dizisine kullanıcı verisi ekleyebilmek istiyorum. Test11'i uyuşmuş bir dizi yapmadan iyi çalışır. Ama sayının boyutunu 20 ile sınırlayabilmek istiyorum. Herhangi bir fikrin var mı? Plz basitleştirin.

HATA KODU: Traceback (en son çağrı): satır 10, test11.append (data) içinde AttributeError: 'numpy.ndarray' nesnesinin 'append' niteliği yok

Yanıtlar

1 ThreePoint14 Aug 19 2020 at 06:50

Bu işe yarıyor. Birkaç satırı tekrar değiştirdim ve işaretledim.

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)

Sürüm listesi.

# 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)

Bu, her şeyi değiştirmeden ve başladığınız şeye benzer şekilde tutmadan yapabildiğim kadar sıkıştırılmış.

Artık kullanıcı 20'den büyük bir sayı veya herhangi bir harf kullanamaz, yoksa bir hata görünecektir.

JoãoVitorBarbosa Aug 19 2020 at 06:22

Numpy dizilerinin 'ekleme' yöntemi yoktur, ihtiyaç duyacağınız şekil ve uzunlukta yaratılmaları gerekir. Yani sizin durumunuzda, en iyi yol bir liste yapmak, değerleri eklemek ve ardından diziyi oluşturmaktır:

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

Çizginizi şu şekilde değiştirebilirsiniz np.append:

np.append(test11,data)

Ancak numpy dizisine eklemek, bir listeye eklemekten daha pahalıdır. listYapıyı kullanmanızı öneririm appendve sonunda listenizi numpy dizisine dönüştürür.np.array

İşte liste versiyonu:

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)