NumPy Áp dụng chức năng

Numpy Ap Dung Chuc Nang



Thư viện tích hợp được cung cấp bởi Python, được gọi là NumPy, cho phép chúng ta xây dựng các mảng đa chiều, sửa đổi chúng và thực hiện các phép tính số học khác nhau trên chúng. Chức năng áp dụng cũng được cung cấp bởi gói NumPy. Trường hợp sử dụng điển hình cho hàm áp dụng tương tự như trường hợp chúng ta muốn cắt một mảng và thực hiện một số thao tác trên mỗi phần tử của danh sách, ví dụ, nếu chúng ta muốn loại bỏ từng mục của một hàng. Tất nhiên, trong Python, chúng tôi biết rằng vòng lặp for chậm nên chúng tôi muốn tránh chúng nếu có thể. Có thể sử dụng chức năng “áp dụng” nếu bạn muốn thực hiện cùng một thao tác trên mỗi hàng hoặc cột của khung dữ liệu. Nói cách khác, nó thực hiện những gì bạn muốn làm với vòng lặp for mà không cần phải viết vòng lặp for.

Có hai phương pháp để áp dụng bất kỳ hàm nào cho mảng tùy thuộc vào điều kiện. Chúng ta có thể áp dụng hàm “apply over the axis” rất hữu ích khi chúng ta áp dụng hàm trên từng phần tử của mảng một và nó hữu ích cho các mảng n chiều. Phương pháp thứ hai là “áp dụng dọc theo trục” áp dụng cho mảng một chiều.

Cú pháp:

Phương pháp 1: Áp dụng theo trục

numpy. apply_along_axis ( 1d_ Chức năng , trục , arr , * args , ** cãi vã )

Trong cú pháp, chúng ta có hàm “numpy.apply” mà chúng ta truyền năm đối số. Đối số đầu tiên là “1d_ functions” hoạt động trên mảng một chiều, bắt buộc phải có. Trong khi đối số thứ hai, 'axis', là đối số mà bạn muốn cắt mảng và áp dụng hàm đó trên trục nào. Tham số thứ ba là “arr” là mảng đã cho mà chúng ta muốn áp dụng hàm. Trong khi “* args” và “* kwargs” là các đối số bổ sung không cần thiết phải thêm vào.







Ví dụ 1:

Để hiểu rõ hơn về các phương pháp “áp dụng”, chúng tôi thực hiện một ví dụ để kiểm tra hoạt động của các phương pháp áp dụng. Trong trường hợp này, chúng tôi thực hiện hàm “apply_along_Axis”. Hãy tiến hành bước đầu tiên của chúng ta. Đầu tiên, chúng tôi bao gồm các thư viện NumPy của chúng tôi dưới dạng np. Và sau đó, chúng tôi tạo một mảng có tên “arr” chứa ma trận 3 × 3 với các giá trị nguyên là “8, 1, 7, 4, 3, 9, 5, 2 và 6”. Trong dòng tiếp theo, chúng ta tạo một biến có tên là “mảng” có nhiệm vụ lưu giữ kết quả của hàm apply_along_Axis.



Đối với hàm đó, chúng ta truyền ba đối số. Đầu tiên là hàm mà chúng ta muốn áp dụng cho mảng, trong trường hợp của chúng ta, nó là hàm được sắp xếp vì chúng ta muốn mảng của mình được sắp xếp. Sau đó, chúng ta chuyển đối số thứ hai “1”, có nghĩa là chúng ta muốn cắt mảng của mình dọc theo trục = 1. Cuối cùng, chúng tôi chuyển mảng sẽ được sắp xếp trong trường hợp này. Ở cuối đoạn mã, chúng ta chỉ cần in cả hai mảng - mảng ban đầu cũng như mảng kết quả - được hiển thị bằng cách sử dụng câu lệnh print ().



nhập khẩu numpy như ví dụ.

arr = ví dụ. mảng ( [ [ số 8 , 1 , 7 ] , [ 4 , 3 , 9 ] , [ 5 , hai , 6 ] ] )

mảng = ví dụ. apply_along_axis ( đã sắp xếp , 1 , arr )

in ( 'mảng ban đầu là:' , arr )

in ( 'mảng được sắp xếp là:' , mảng )





Như chúng ta có thể thấy trong đầu ra sau đây, chúng tôi đã hiển thị cả hai mảng. Trong lần đầu tiên, các giá trị được đặt ngẫu nhiên trong mỗi hàng của ma trận. Nhưng trong cái thứ hai, chúng ta có thể thấy mảng được sắp xếp. Vì chúng tôi đã vượt qua trục “1”, nó đã không sắp xếp toàn bộ mảng nhưng nó đã sắp xếp theo hàng như được hiển thị. Mỗi hàng được sắp xếp. Hàng đầu tiên trong mảng đã cho là “8, 1 và 7”. Trong khi ở trong mảng đã sắp xếp, hàng đầu tiên là “1, 7 và 8”. Tương tự như thế này, mỗi hàng được sắp xếp.



Phương pháp 2: Áp dụng Trục

numpy. apply_over_axes ( func , một , rìu )

Trong cú pháp đã cho, chúng ta có hàm numpy.apply_over_axis chịu trách nhiệm áp dụng hàm trên trục đã cho. Bên trong hàm apply_over_axis, chúng ta truyền ba đối số. Đầu tiên là chức năng sẽ được thực hiện. Cái thứ hai là chính mảng. Và cái cuối cùng là trục mà chúng ta muốn áp dụng hàm.

Ví dụ 2:

Trong ví dụ sau, chúng tôi thực hiện phương thức thứ hai của hàm “áp dụng”, trong đó chúng tôi tính tổng của mảng ba chiều. Một điều cần nhớ là tổng của hai mảng không có nghĩa là chúng ta tính toàn bộ mảng. Trong một số mảng, chúng tôi tính toán tổng theo hàng, có nghĩa là chúng tôi thêm các hàng và lấy phần tử đơn lẻ ra khỏi chúng.

Hãy chuyển sang mã của chúng ta. Đầu tiên chúng ta nhập gói NumPy và sau đó tạo một biến chứa mảng ba chiều. Trong trường hợp của chúng ta, biến là “arr”. Trong dòng tiếp theo, chúng tôi tạo một biến khác chứa mảng kết quả của hàm apply_over_axis. Chúng tôi gán hàm apply_over_Axis cho biến “arr” với ba đối số. Đối số đầu tiên là hàm tích hợp của NumPy để tính tổng là np.sum. Tham số thứ hai là chính mảng. Đối số thứ ba là trục mà hàm được áp dụng, trong trường hợp này chúng ta có trục “[0, 2]”. Ở cuối đoạn mã, chúng tôi thực thi cả hai mảng bằng cách sử dụng câu lệnh print ().

nhập khẩu numpy như ví dụ.

arr = ví dụ. mảng ( [ [ [ 6 , 12 , hai ] , [ hai , 9 , 6 ] , [ 18 , 0 , 10 ] ] ,

[ [ 12 , 7 , 14 ] , [ hai , 17 , 18 ] , [ 0 , hai mươi mốt , số 8 ] ] ] )

mảng = ví dụ. apply_over_axes ( ví dụ. Tổng , arr , [ 0 , hai ] )

in ( 'mảng ban đầu là:' , arr )

in ( 'tổng của mảng là:' , mảng )

Như thể hiện trong hình sau, chúng tôi đã tính toán một số mảng ba chiều bằng cách sử dụng hàm apply_over_axis. Mảng được hiển thị đầu tiên là mảng ban đầu có hình dạng “2, 3, 3” và mảng thứ hai là tổng của các hàng. Tổng của hàng đầu tiên là '53', hàng thứ hai là '54' và hàng cuối cùng là '57'.

Sự kết luận

Trong bài viết này, chúng tôi đã nghiên cứu cách hàm apply được sử dụng trong NumPy và cách chúng ta có thể áp dụng các hàm khác nhau trên các mảng dọc theo hoặc trên trục. Có thể dễ dàng áp dụng bất kỳ hàm nào trên hàng hoặc cột mong muốn bằng cách cắt chúng bằng các phương pháp “áp dụng” do NumPy cung cấp. Đó là một cách hiệu quả khi chúng ta không cần phải áp dụng nó cho toàn bộ mảng. Chúng tôi hy vọng bạn thấy bài đăng này có lợi trong việc học cách sử dụng phương pháp áp dụng.