Đây là một cách khác để tạo lại lỗi này trong Python2.7 với numpy:
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.concatenate(a,b)
print(c)
Các np.concatenate
phương pháp tạo ra một lỗi:
TypeError: only length-1 arrays can be converted to Python scalars
Nếu bạn đọc tài liệu về numpy.concatenate , thì bạn sẽ thấy nó mong đợi một loạt các đối tượng mảng numpy. Vì vậy, xung quanh các biến bằng parens đã sửa nó:
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.concatenate((a,b))
print(c)
Sau đó, nó in:
[1 2 3 4 5 6]
Những gì đang xảy ra ở đây?
Lỗi đó là một trường hợp triển khai bong bóng - nó là do triết lý gõ vịt của python. Đây là một lỗi khó hiểu ở mức độ thấp, python tức giận khi nó nhận được một số loại biến không mong muốn, cố gắng chạy đi và làm điều gì đó, vượt qua một cách khó hiểu, lỗi, cố gắng khắc phục, không thành công, sau đó nói với bạn rằng "bạn có thể" t định dạng lại các máy phản ứng vũ trụ con khi gió thổi từ phía đông vào thứ Ba ".
Trong các ngôn ngữ hợp lý hơn như C ++ hoặc Java, nó sẽ cho bạn biết: "bạn không thể sử dụng TypeA mà TypeB được mong đợi". Nhưng Python làm tốt nhất là bắt đầu, thực hiện điều gì đó không xác định, thất bại và sau đó trả lại cho bạn một lỗi không hữu ích. Thực tế chúng ta phải thảo luận về điều này là một trong những lý do khiến tôi không thích Python, hoặc triết lý gõ đầu vịt của nó.
TypeError: Don't feed native python lists into numpy functions that expect numpy arrays. Either convert your python list to a numpy array or package your python lists into a tuple.
Python numpy thực sự làm rơi quả bóng vào cái đó, thông báo lỗi đó thật khủng khiếp.