Computer >> Máy Tính >  >> Lập trình >> Python

Python AttributeError:Đối tượng ‘numpy.ndarray’ không có thuộc tính ‘append’ Giải pháp

Trong Python thông thường, bạn có thể sử dụng append() để thêm một mục vào cuối danh sách. Bạn không thể sử dụng phương pháp này trong NumPy. Nếu bạn cố gắng sử dụng Python append() để thêm một mục vào cuối mảng NumPy, bạn sẽ thấy đối tượng AttributeError: ‘numpy.ndarray’ object has no attribute ‘append’ lỗi.

Hướng dẫn này thảo luận chi tiết về nguyên nhân và giải pháp cho lỗi NumPy này. Chúng tôi sẽ tham khảo một ví dụ để minh họa cách khắc phục lỗi này. Hãy bắt đầu.

AttributeError:Đối tượng ‘numpy.ndarray’ không có thuộc tính ‘append’

Đối tượng AttributeError: ‘numpy.ndarray’ object has no attribute ‘append’ lỗi do sử dụng append() để thêm một mục vào một mảng NumPy. Thay vào đó, bạn nên sử dụng numpy.append() nếu bạn muốn thêm một mục vào danh sách.

numpy.append() phương thức được viết riêng cho thư viện NumPy. Mảng NumPy khác với các mảng Python thông thường vì vậy hợp lý là NumPy có phương thức riêng để thêm một mục vào một mảng.

NumPy append() phương thức sử dụng cú pháp này:

numpy.append(list_to_add_item, item_to_add)

Hai thông số chúng tôi sẽ tập trung vào là:

  • list_to_add_item:Danh sách mà bạn muốn thêm một mục.
  • item_to_add:Mục bạn muốn thêm vào danh sách bạn chỉ định.

numpy.append() phương thức trả về một mảng mới có chứa mục đã chỉ định của bạn ở cuối, dựa trên mảng “list_to_add_item”. Lưu ý rằng bạn không đặt append() sau danh sách mà bạn muốn thêm một mục, giống như bạn làm trong Python thông thường.

Hãy xem qua một ví dụ về lỗi này.

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

Một tình huống mẫu

Chúng tôi đang xây dựng một ứng dụng theo dõi các cấp hiệu suất mà một sản phẩm đã nhận được sau khi đảm bảo chất lượng tại nhà máy. Các sản phẩm được chấm theo thang điểm 50 và tất cả các sản phẩm phải đạt được số điểm từ 40 trở lên mới được ra thế giới.

Chúng tôi đang xây dựng một phần của ứng dụng để thêm điểm số mới vào một mảng lưu trữ điểm số mà một sản phẩm đã nhận được trong ngày qua. Để xây dựng chương trình này, chúng ta có thể sử dụng append() phương pháp:

import numpy as np

scores = np.array([49, 48, 49, 47, 42, 48, 46, 50])
to_add = 49

scores.append(to_add)

print(scores)

Chương trình của chúng tôi thêm điểm 39 vào danh sách điểm của chúng tôi. Trong tình huống thực tế, chúng tôi có thể đọc các điểm số này từ một tệp, nhưng để giữ cho ví dụ của chúng tôi đơn giản, chúng tôi đã khai báo một mảng trong chương trình của mình. Mã của chúng tôi in danh sách tất cả các điểm vào bảng điều khiển Python sau khi điểm mới được thêm vào mảng điểm của chúng tôi.

Hãy chạy mã của chúng tôi và xem điều gì sẽ xảy ra:

Traceback (most recent call last):
  File "test.py", line 6, in <module>
	scores.append(to_add)
AttributeError: 'numpy.ndarray' object has no attribute 'append'

Mã của chúng tôi trả về lỗi.

Giải pháp

Chúng tôi đang cố gắng sử dụng Python append() thông thường phương pháp để thêm một mục vào mảng NumPy của chúng tôi, thay vì tùy chỉnh numpy.append() phương pháp.

Để giải quyết lỗi này, chúng ta cần sử dụng cú pháp cho numpy.append() phương pháp:

import numpy as np

scores = np.array([49, 48, 49, 47, 42, 48, 46, 50])

scores = np.append(scores, 49)

print(scores)

Chúng tôi sử dụng thuật ngữ np để chỉ thư viện NumPy. Điều này hoạt động vì chúng tôi đã định nghĩa thư viện numpy là np trong câu lệnh nhập của chúng tôi. Chúng tôi chuyển danh sách mà chúng tôi muốn thêm một mục làm đối số đầu tiên của chúng tôi; điểm mới để thêm vào mảng của chúng tôi là đối số thứ hai của chúng tôi.

Chúng tôi phải gán kết quả của np.append() của chúng tôi hoạt động sang một giá trị mới. Điều này là do np.append() không sửa đổi một mảng hiện có. Thay vào đó, phương thức tạo một mảng mới với giá trị mới của bạn được thêm vào.

Hãy chạy chương trình của chúng tôi và xem điều gì sẽ xảy ra:

[49 48 49 47 42 48 46 50 49]

Số 49 đã được thêm thành công vào cuối danh sách của chúng tôi.

Kết luận

Đối tượng AttributeError: ‘numpy.ndarray’ object has no attribute ‘append’ lỗi cho biết bạn đang sử dụng Python append() thông thường để thêm một mục vào một mảng NumPy. Thay vào đó, bạn nên sử dụng numpy.append() , sử dụng cú pháp:numpy.append (list, item_to_add). Phương pháp này tạo một danh sách mới với mục được chỉ định được thêm vào cuối.

Bạn có muốn tìm hiểu thêm về cách viết mã trong NumPy? Hãy xem hướng dẫn Cách học NumPy của chúng tôi. Hướng dẫn này chứa các mẹo hàng đầu về cách xây dựng kiến ​​thức của bạn về NumPy, cùng với danh sách các tài nguyên học tập phù hợp cho các nhà phát triển sơ cấp và trung cấp.