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.
Python