Skip to Content
Python📦 Thư viện NumpyCác hàm phổ quát (Universal Functions - ufunc)

Các hàm phổ quát (Universal functions - ufunc) cơ bản

Hàm phổ quát (hay gọi tắt là ufunc) là một hàm hoạt động trên các ndarray theo kiểu từng phần tử, hỗ trợ lan truyền mảng (broadcasting), ép kiểu (type casting) và một số tính năng tiêu chuẩn khác.

Cơ bản

Trong NumPy, các hàm phổ quát là các thể hiện của lớp numpy.ufunc. Ví dụ đơn giản nhất là toán tử cộng:

np.array([0,2,3,4]) + np.array([1,1,-1,2]) # array([1, 3, 2, 6])

Các phương thức của Ufunc

Tất cả các ufunc đều có bốn phương thức.

reduce

Giảm số chiều của mảng đi một bằng cách áp dụng ufunc dọc theo một trục.

x = np.arange(9).reshape(3,3) np.add.reduce(x, 1) # array([ 3, 12, 21])

accumulate

Tích lũy kết quả của việc áp dụng toán tử cho tất cả các phần tử.

np.add.accumulate([2, 3, 5]) # array([ 2, 5, 10])

reduceat

Thực hiện giảm (tại chỗ) với các lát cắt (slices) được chỉ định trên một trục duy nhất.

np.add.reduceat(np.arange(8),[0,4, 1,5, 2,6, 3,7])[::2] # array([ 6, 10, 14, 18])

outer

Áp dụng ufunc cho tất cả các cặp (a, b) với a trong A và b trong B.

np.multiply.outer([1, 2, 3], [4, 5, 6]) # array([[ 4, 5, 6], # [ 8, 10, 12], # [12, 15, 18]])

Quy tắc ép kiểu

Cốt lõi của mỗi ufunc là một vòng lặp có bước nhảy một chiều thực hiện hàm thực tế cho một sự kết hợp kiểu cụ thể. Khi một ufunc được sử dụng, trước tiên nó sẽ kiểm tra dtype của mảng đầu vào và cố gắng tìm một vòng lặp với các kiểu chính xác.

Last updated on