Tôi có hai mảng thuộc các loại khác nhau.
>>> gõ (trước)
>>> loại (nhãn1)
Chuyển đổi chúng thành np.ndarray
>>>nl = np.array(nhãn1)
>>> npred = np.array(pred)
>>> loại (nl)
>>> gõ (npred)
>>>nl.hình dạng
(189,)
>>> npred.shape
(189,)
Như bạn có thể thấy,nl
Vànpred
Hai biến thực sự có cùng loại và kích thước.
Tuy nhiên, khi tôi cố gắng trừ chúng thì đã xảy ra lỗi.
>>>nl-npred
Traceback (most recent call last):
File "", line 1, in
TypeError: (các) loại toán hạng không được hỗ trợ cho -: 'numpy.ndarray' và 'numpy.ndarray'
Thật kỳ lạ phải không?
Tuy nhiên, vấn đề bạn đang gặp phải là nl
Và npred
Đúng numpy.ndarray
các đối tượng, nhưng chúng có thể chứa dữ liệu không đồng nhất. Xem tài liệu numpy.dtype
:
Một mảng có nhiều mảng là đồng nhất và chứa các phần tử được mô tả bởi một đối tượng dtype. Một đối tượng dtype có thể được xây dựng từ các kết hợp khác nhau của các kiểu số cơ bản.
Vì vậy, nếu n1
là một mảng các chuỗi, trong khi npred
là một mảng các số nguyên, bạn không thể thực hiện thao tác cộng:
>>> nhập numpy dưới dạng np
>>> a = np.array(['a', 'b', 'c'])
>>> b = np.array([1, 2, 3])
>>> loại(a), loại(b)
(numpy.ndarray, numpy.ndarray)
>>> a + b
(các) loại toán hạng không được hỗ trợ cho +: 'numpy.ndarray' và 'numpy.ndarray
Nếu bạn muốn biết loại nội dung của một mảng:
>>> a.dtype, b.dtype
(dtype('S1'), dtype('int64'))
Vì vậy, bạn phải biết mỗi mảng chứa kiểu dữ liệu nào. Đó không phải là vấn đề kích thước.
Tôi là một lập trình viên xuất sắc, rất giỏi!