Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python AttributeError: 'numpy.ndarray' object has no attribute 'append' - Giải pháp

Python AttributeError: 'numpy.ndarray' object has no attribute 'append' - Giải pháp

Trong Python thông thường, bạn dùng phương thức append() thêm mục vào cuối list. Bạn không thể dùng phương thức này trong NumPy. Nếu bạn thử dùng append() Python thêm mục vào cuối mảng NumPy, bạn sẽ thấy lỗi AttributeError: 'numpy.ndarray' object has no attribute 'append'.

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

AttributeError: 'numpy.ndarray' object has no attribute 'append'

Lỗi AttributeError: 'numpy.ndarray' object has no attribute 'append' do dùng phương thức append() thêm mục vào mảng NumPy. Bạn nên dùng numpy.append() nếu muốn thêm mục vào list.

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

Phương thức numpy.append() dùng cú pháp:

numpy.append(list_to_add_item, item_to_add)

Hai tham số ta tập trung:

  • list_to_add_item: List bạn muốn thêm mục vào.
  • item_to_add: Mục bạn muốn thêm vào list chỉ định.

Phương thức numpy.append() trả về mảng mới chứa mục chỉ định ở cuối, dựa trên mảng "list_to_add_item". Lưu ý bạn không đặt append() sau list muốn thêm mục, như Python thông thường.

Hãy đi qua ví dụ lỗi này.

Tình huống ví dụ

Ta xây dựng ứng dụng theo dõi điểm hiệu suất sản phẩm nhận được sau kiểm soát chất lượng tại nhà máy. Sản phẩm chấm thang 50 và tất cả phải đạt ít nhất 40 để xuất xưởng.

Ta xây dựng phần ứng dụng thêm điểm mới vào mảng lưu điểm sản phẩm nhận được trong ngày qua. Để xây dựng chương trình, ta dùng append():

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 thêm điểm 39 vào list điểm. Trong thực tế, ta có thể đọc điểm từ file, nhưng để ví dụ đơn giản ta khai báo mảng trong chương trình. Mã in list tất cả điểm ra màn hình Python sau khi điểm mới thêm vào mảng điểm.

Chạy mã xem gì xảy ra:

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

Mã trả về lỗi.

Giải pháp

Ta đang cố dùng append() Python thông thường thêm mục vào mảng NumPy, thay vì numpy.append() tùy chỉnh.

Để sửa lỗi, ta cần dùng cú pháp numpy.append():

import numpy as np
scores = np.array([49, 48, 49, 47, 42, 48, 46, 50])
scores = np.append(scores, 49)
print(scores)

Ta dùng np chỉ thư viện NumPy. Điều này hoạt động vì ta định nghĩa numpy là np trong câu lệnh import. Ta truyền list muốn thêm mục làm đối số đầu; điểm mới thêm vào mảng là đối số hai.

Ta phải gán kết quả np.append() cho giá trị mới. Vì np.append() không sửa mảng hiện có. Thay vào đó, phương thức tạo mảng mới với giá trị mới thêm vào.

Chạy chương trình xem kết quả:

[49 48 49 47 42 48 46 50 49]

Số 49 đã thêm thành công vào cuối list.

Kết luận

Lỗi AttributeError: 'numpy.ndarray' object has no attribute 'append' chỉ ra bạn dùng append() Python thông thường thêm mục vào mảng NumPy. Thay vào đó, dùng numpy.append() với cú pháp: numpy.append(list, item_to_add). Phương thức này tạo list mới với mục chỉ định thêm ở cuối.

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