Không thể chuyển đổi đối số 1 chỉ mảng kích thước 1 có thể được chuyển đổi thành vô hướng python?

câu trả lời được chấp nhận

Bạn đang trộn thứ tự của các đối số

Xem tài liệu về cvtColor

con trăn. cv2. cvtColor(src, code[, dst[, dstCn]]) → dst

Như bạn có thể thấy ma trận đích là đối số thứ ba.
_______10 là đối số thứ hai.
_______10 phải là vô hướng, nhưng bạn đang chuyển ____12 làm đối số thứ hai, vì vậy bạn đang gặp lỗi.
______13.

Để tránh lỗi, bạn có thể sử dụng

cv2.cvtColor(matrix_, cv2.COLOR_HSV2RGB, matrix_)

Tốt hơn bạn nên sử dụng giá trị trả về (cú pháp rõ ràng hơn)

matrix_ = cv2.cvtColor(matrix_, cv2.COLOR_HSV2RGB)

Bây giờ có một ngoại lệ khác.

matrix_ = cv2.cvtColor(matrix_, cv2.COLOR_HSV2RGB)
4

Bạn đã đặt sai hình dạng ma trận

Thay vì

matrix_ = cv2.cvtColor(matrix_, cv2.COLOR_HSV2RGB)
5, nó phải là

matrix_=np.zeros([H-kernel+1, W-kernel+1, 3], dtype=np.float32)

Cú pháp

matrix_ = cv2.cvtColor(matrix_, cv2.COLOR_HSV2RGB)
6 có vẻ lạ.
Bạn không đăng các giá trị của
matrix_ = cv2.cvtColor(matrix_, cv2.COLOR_HSV2RGB)
0,
matrix_ = cv2.cvtColor(matrix_, cv2.COLOR_HSV2RGB)
1,
matrix_ = cv2.cvtColor(matrix_, cv2.COLOR_HSV2RGB)
2 và
matrix_ = cv2.cvtColor(matrix_, cv2.COLOR_HSV2RGB)
3.
Tôi không thể nói nó đúng hay sai.
Tôi phải cho rằng nó nằm ngoài phạm vi câu hỏi của bạn.

Bạn đang gặp lỗi "chỉ các mảng có độ dài 1 mới có thể được chuyển đổi thành vô hướng Python" là do khi hàm mong đợi một giá trị duy nhất thay vì giá trị đó thì bạn đã chuyển một mảng

Khi bạn sẽ xem chữ ký cuộc gọi của np. int, bạn sẽ thấy rằng nó chấp nhận một giá trị duy nhất, không phải một mảng.  

Thông thường, nếu bạn muốn áp dụng một hàm chấp nhận một phần tử cho mọi phần tử trong một mảng, bạn có thể sử dụng np. vectorize xem mã dưới đây. -

Chỉ các mảng có kích thước 1 hoặc độ dài 1 mới có thể được chuyển đổi thành các giá trị vô hướng trong Python TypeError xảy ra khi chúng ta chuyển một mảng vào vị trí của các giá trị đơn lẻ như int, float, v.v. trong bất kỳ hàm nào dưới dạng tham số. Đây là một lỗi loại python rất chung chung nhưng phần lớn các nhà phát triển gặp phải lỗi này khi làm việc với Matplotlib, thư viện Numpy

Chỉ các mảng có kích thước 1 mới có thể được chuyển đổi thành vô hướng Python. (Dung dịch ) -

Trước khi tôi cung cấp cho bạn giải pháp, hãy tìm hiểu nguyên nhân gốc rễ của lỗi này

Nguyên nhân gốc rễ –

Nguyên nhân gốc rễ là truyền mảng thay cho bộ chia tỷ lệ. Bây giờ hãy hiểu quy mô là gì. Nó thực sự đơn giản như int, float, v.v. bao gồm độ lớn của một phần tử là bộ chia tỷ lệ. Ví dụ: 1o là vô hướng kiểu int. Giá trị nổi 10. 2 là vô hướng. Ở phía đối diện, mảng chứa nhiều phần tử cùng kiểu với nhau. Ví dụ [1,2,3,4] là mảng kiểu int. Nếu bạn xem xét lỗi này, bạn sẽ khiến nhà phát triển nhận được cùng một mã trong nhiều ngữ cảnh nhưng nguyên nhân gốc rễ sẽ luôn giống nhau

Một TypeError phổ biến trong Python là TypeError chỉ các mảng có độ dài 1 mới có thể được chuyển đổi thành vô hướng python. Bạn có thể gặp khi làm việc với thư viện NumPy và Matplotlib. Điều này xảy ra khi hàm mà bạn đã xác định hoặc đã tạo đang mong đợi một tham số duy nhất nhưng thay vào đó lại nhận được một mảng. Bạn có thể bắt đầu sửa lỗi này bằng cách chuyển một giá trị cho hàm

Trong bài viết này, chúng ta sẽ hiểu thêm về lỗi này và cách khắc phục

Thí dụ

# Import numpy & matplotlib
import numpy
import matplotlib.pyplot

# Define your custome function
def myfunction(x):
  return numpy.int(x)

x = numpy.arange(1, 15.1, 0.1)
matplotlib.pyplot.plot(x, myfunction(x))
matplotlib.pyplot.show()

đầu ra

________số 8

Lỗi này xảy ra khi hàm có tên np. int() nhận một tham số duy nhất theo định nghĩa hàm của nó. Nhưng nếu bạn đang truyền một mảng, nó sẽ không hoạt động và báo lỗi

Dung dịch

Bên cạnh việc chuyển một phần tử cho hàm, bạn cũng có thể thử sử dụng lệnh np. chức năng véc tơ (). Sử dụng đoạn mã sau để gán np. phương thức int() cho chức năng này

# import numpy & matplotlib
import numpy
import matplotlib.pyplot

# define your custom function
def myfunction(x):
  return numpy.int(x)

myfunction2 = numpy.vectorize(myfunction)
x = numpy.arange(1, 15.1, 0.1)
matplotlib.pyplot.plot(x, myfunction2(x))
matplotlib.pyplot.show()

đầu ra

Không thể chuyển đổi đối số 1 chỉ mảng kích thước 1 có thể được chuyển đổi thành vô hướng python?

các np. Hàm vectorize() hoạt động như một "vòng lặp for" cho phép hàm được truyền vào nó chấp nhận một phần tử từ một mảng. Vì vậy, một phần tử duy nhất được chuyển vào np. phương thức int() mỗi lần

Sự kết luận

Bạn phải chuyển các giá trị đơn lẻ cho các hàm chấp nhận một giá trị đơn lẻ. Như đã đề cập trước đó, cách tốt nhất để giải quyết lỗi này là sử dụng numpy. phương pháp véc tơ hóa (). Điều này sẽ chuyển đổi mảng bạn truyền vào hàm, thành một vectơ.  

Các mảng chỉ có kích thước 1 có thể được chuyển đổi thành vô hướng Python là gì?

"TypeError. chỉ các mảng có kích thước 1 mới có thể được chuyển đổi thành các đại lượng vô hướng trong Python" lỗi xảy ra 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ố . Đoạn mã trên đưa ra lỗi "TypeError. chỉ các mảng có kích thước 1 mới có thể được chuyển đổi thành vô hướng Python" vì chúng tôi đã chuyển mảng y sang phương thức NumPy int().

Mảng kích thước 1 là gì?

Chỉ lỗi mảng kích thước 1 là TypeError được kích hoạt khi bạn nhập một mảng làm tham số trong một hàm hoặc phương thức chấp nhận một giá trị vô hướng duy nhất. Many functions have inbuilt error handling methods to avoid crashing programs and validate the inputs given for the function.

Bạn có thể thay đổi kích thước của một mảng trong Python không?

resize(), chúng ta có thể thay đổi kích thước của mảng . Mảng có thể có hình dạng bất kỳ nhưng để thay đổi kích thước của nó, chúng ta chỉ cần kích thước i. e (2, 2), (2, 3) và nhiều hơn nữa. Trong quá trình thay đổi kích thước, các số 0 sẽ được thêm vào nếu các giá trị tại một vị trí cụ thể bị thiếu.

Một vô hướng có thể là một mảng?

Mảng vô hướng là một nhóm các vị trí bộ nhớ liên tiếp có độ dài cố định, mỗi vị trí lưu trữ một giá trị cùng loại . Bạn truy cập các mảng vô hướng bằng cách tham chiếu đến từng vị trí bằng một số nguyên bắt đầu từ số không. Trong các chương trình D, bạn thường sử dụng mảng vô hướng để truy cập dữ liệu mảng trong hệ điều hành.