Trong Python, bạn có thể sử dụng numpy
thư viện khi làm việc với mảng và một số khái niệm toán học như ma trận và đại số tuyến tính.
Nhưng giống như mọi khía cạnh khác của việc học và làm việc với một ngôn ngữ lập trình, sai sót là không thể tránh khỏi.
Trong bài viết này, bạn sẽ tìm hiểu cách khắc phục lỗi “TypeError: only size-1 arrays can be convert to Python scalars” lỗi thường xảy ra khi sử dụng numpy
thư viện.
Điều gì gây ra TypeError: only size-1 arrays can be converted to Python scalars
Lỗi trong Python?
Lỗi “TypeError: only size-1 arrays can be convert to Python scalars” xuất hiện khi chúng ta chuyển một mảng sang một phương thức chỉ chấp nhận một tham số.
Đây là một ví dụ:
import numpy as np
y = np.array([1, 2, 3, 4])
x = np.int(y)
print(x)
# TypeError: only size-1 arrays can be converted to Python scalars
Đoạn mã trên đưa ra lỗi “TypeError: only size-1 arrays can be convert to Python scalars” vì chúng ta đã chuyển y
mảng vào NumPy int()
phương pháp. Phương thức chỉ có thể chấp nhận một tham số.
Trong phần tiếp theo, bạn sẽ thấy một số giải pháp cho lỗi này.
Cách khắc phục TypeError: only size-1 arrays can be converted to Python scalars
Lỗi trong Python
Có hai giải pháp chung để sửa lỗi “TypeError: only size-1 arrays can be convert to Python scalars”.
Giải pháp số 1 – Sử dụng np.vectorize()
Chức năng
Các np.vectorize()
chức năng có thể chấp nhận một chuỗi/một mảng làm tham số của nó. Khi in ra, nó trả về một mảng.
Đây là một ví dụ:
import numpy as np
vector = np.vectorize(np.int_)
y = np.array([2, 4, 6, 8])
x = vector(y)
print(x)
# [2, 4, 6, 8]
Trong ví dụ trên, chúng tôi đã tạo một vector
biến sẽ “vectơ hóa” bất kỳ tham số nào được truyền cho nó: np.vectorize(np.int_)
.
Sau đó, chúng tôi đã tạo một mảng và lưu trữ nó trong y
Biến đổi: np.array([2, 4, 6, 8])
.
Sử dụng vector
biến chúng tôi đã tạo ban đầu, chúng tôi đã chuyển y
mảng như một tham số: x = vector(y)
.
Khi in ra, chúng ta có mảng — [2, 4, 6, 8]
.
Giải pháp số 2 – Sử dụng map()
Chức năng
Các map()
hàm chấp nhận hai tham số trong trường hợp này — phương thức NumPy và mảng.
import numpy as np
y = np.array([2, 4, 6, 8])
x = np.array(list(map(np.int_, y)))
print(x)
# [2, 4, 6, 8]
Trong ví dụ trên, chúng tôi đã lồng các map()
chức năng trong một list()
phương pháp để chúng tôi lấy lại mảng dưới dạng danh sách chứ không phải đối tượng bản đồ.
Giải pháp số 3 – Sử dụng astype()
Phương pháp
Chúng ta có thể sử dụng astype()
phương pháp để chuyển đổi một mảng NumPy thành số nguyên. Điều này sẽ ngăn lỗi “TypeError: only size-1 arrays can be convert to Python scalars” xuất hiện.
Đây là cách:
import numpy as np
vector = np.vectorize(np.int_)
y = np.array([2, 4, 6, 8])
x = y.astype(int)
print(x)
# [2 4 6 8]
Tóm lược
Trong bài viết này, chúng ta đã nói về lỗi “TypeError: only size-1 arrays can be convert to Python scalars” trong Python.
Nó được nâng lên khi chúng ta chuyển một mảng làm tham số cho một numpy
phương thức chỉ chấp nhận một tham số.
Để khắc phục lỗi, chúng tôi đã sử dụng các phương pháp khác nhau như np.vectorize()
chức năng, map()
chức năng, và astype()
phương pháp.
Chúc mừng mã hóa!