Có chức năng xoay trong Python không?

Mảng được xoay trong mặt phẳng được xác định bởi hai trục được cung cấp bởi tham số axis sử dụng phép nội suy spline của thứ tự được yêu cầu

Thông số . đầu vào mảng_like

mảng đầu vào

góc trôi nổi

Góc quay tính bằng độ

trục bộ gồm 2 số nguyên, tùy chọn

Hai trục xác định mặt phẳng quay. Mặc định là hai trục đầu tiên

định hình lại bool, tùy chọn

Nếu định hình lại là đúng, hình dạng đầu ra được điều chỉnh sao cho mảng đầu vào được chứa hoàn toàn trong đầu ra. Mặc định là Đúng

đầu ra mảng hoặc dtype, tùy chọn

Mảng để đặt đầu ra hoặc dtype của mảng được trả về. Theo mặc định, một mảng có cùng loại với đầu vào sẽ được tạo

thứ tự int, tùy chọn

Thứ tự nội suy spline, mặc định là 3. Thứ tự phải nằm trong khoảng 0-5

mode {'phản chiếu', 'gương lưới', 'hằng số', 'hằng số lưới', 'gần nhất', 'gương', 'gói lưới', 'quấn'}, tùy chọn

Tham số chế độ xác định cách mảng đầu vào được mở rộng ra ngoài ranh giới của nó. Mặc định là 'không đổi'. Hành vi cho từng giá trị hợp lệ như sau (xem các sơ đồ bổ sung và chi tiết trên)

'phản ánh' (d c b a. A B C D. đ c b a)

Đầu vào được mở rộng bằng cách phản ánh về cạnh của pixel cuối cùng. Chế độ này đôi khi còn được gọi là đối xứng nửa mẫu

'gương lưới'

Đây là một từ đồng nghĩa với 'phản ánh'

'không đổi' (k k k k. A B C D. k k k k)

Đầu vào được mở rộng bằng cách điền tất cả các giá trị ngoài cạnh với cùng một giá trị không đổi, được xác định bởi tham số cval. Không có phép nội suy nào được thực hiện ngoài các cạnh của đầu vào

'hằng số lưới' (k k k k. A B C D. k k k k)

Đầu vào được mở rộng bằng cách điền tất cả các giá trị ngoài cạnh với cùng một giá trị không đổi, được xác định bởi tham số cval. Nội suy cũng xảy ra đối với các mẫu nằm ngoài phạm vi của đầu vào

'gần nhất' (a a a a. A B C D. d d d d)

Đầu vào được mở rộng bằng cách sao chép pixel cuối cùng

‘tấm gương’ (d c b. A B C D. c b a)

Đầu vào được mở rộng bằng cách phản ánh về trung tâm của pixel cuối cùng. Chế độ này đôi khi cũng được gọi là đối xứng toàn bộ mẫu

'quấn lưới' (a b c d. A B C D. A B C D)

Đầu vào được mở rộng bằng cách quấn quanh cạnh đối diện

'quấn' (d b c d. A B C D. b c a b)

Đầu vào được mở rộng bằng cách bao quanh cạnh đối diện, nhưng theo cách sao cho điểm cuối cùng và điểm đầu trùng khớp chính xác. Trong trường hợp này, không xác định rõ mẫu nào sẽ được chọn tại điểm chồng lấp

cval vô hướng, tùy chọn

Giá trị để lấp đầy các cạnh đầu vào trong quá khứ nếu chế độ là 'không đổi'. Mặc định là 0. 0

bộ lọc trước bool, tùy chọn

Xác định xem mảng đầu vào có được lọc trước trước khi nội suy hay không. Giá trị mặc định là True, sẽ tạo một mảng float64 tạm thời gồm các giá trị được lọc nếu thứ tự > 1. Nếu đặt giá trị này thành Sai, đầu ra sẽ hơi mờ nếu thứ tự > 1, trừ khi đầu vào được lọc trước, tôi. e. đó là kết quả của việc gọi đầu vào ban đầu

Bạn cũng có thể sử dụng tính năng cắt để tạo hai danh sách mới và trả về phần nối của cả hai danh sách. Ví dụ sau đây cho thấy cách xoay danh sách k vị trí sang phải bằng cách sử dụng cắt

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách xoay mảng bằng chương trình Python. Chúng ta sẽ viết một hàm để xoay (arry[], E, K) sẽ được sử dụng để xoay arry[] có kích thước K = 8 bởi E = 4 phần tử

Có chức năng xoay trong Python không?

Ta sẽ được mảng sau khi xoay mảng 4 phần tử

Có chức năng xoay trong Python không?

Các phương pháp xoay mảng

Trong phần này, chúng ta sẽ thảo luận về các phương pháp khác nhau mà người dùng có thể sử dụng để xoay mảng theo yêu cầu của họ

Phương pháp 1. Bằng cách sử dụng mảng tạm thời

Trong phương pháp này, chúng tôi sẽ sử dụng cách tiếp cận sau

Bước 1. Chúng tôi sẽ lưu trữ các phần tử "E" trong một mảng tạm thời

Nhiệt độ[] = [1, 3, 5, 7]

Bước 2. chúng tôi sẽ thay đổi phần còn lại của mảng []

arry[] = [9, 11, 13, 15]

Bước 3. Chúng tôi sẽ lưu trữ các phần tử "E"

arry[] = [9, 11, 13, 15, 1, 3, 5, 7]

Ví dụ

đầu ra

Array after Rotation by 4 elements is: [9, 11, 13, 15, 1, 3, 5, 7]

Trong phương pháp trên

Phương pháp 2. Bằng cách xoay từng yếu tố một

Trong phương pháp này, chúng tôi sẽ sử dụng cách tiếp cận sau

rotate_array1(arry[], E, K)

  • chúng ta sẽ đặt điều kiện "cho" là nếu J bằng 0 và nhỏ hơn E thì hàm rotate_array1 sẽ xoay tất cả các phần tử đi một

Chúng ta phải lưu trữ mảng[0] để xoay từng phần tử trong một biến tạm thời, "temp _1". Sau đó, chúng ta sẽ thêm arry[1] thành arry[0], arry[2] thành arry[1], v.v. Cuối cùng, chúng ta sẽ có temp_1 trên arry[n-1]

Ví dụ

đầu ra

The array after rotation: 
1 3 5 7 9 11 13 15

Trong phương pháp trên

Phương pháp 3. Bằng cách sử dụng thuật toán tung hứng

Trong phương pháp này, chúng ta sẽ chia mảng thành các tập hợp khác nhau thay vì di chuyển từng phần tử một

Khi số tập hợp bằng ước chung lớn nhất của "K" và "E", đoạn mã sẽ sắp xếp các phần tử thành các tập hợp

Nếu ước chung lớn nhất bằng 1 thì các phần tử chỉ chuyển vào một tập hợp. Ở đây, chúng ta sẽ bắt đầu với temp_1 = arry[0], và nó sẽ tiếp tục di chuyển arry[J + E] đến arry[J], và cuối cùng, nó sẽ lưu temp_1 vào đúng vị trí

Hãy xem một ví dụ trong đó, K = 16 và E = 4. Ước chung lớn nhất (G_C_D) = 4

Các bước -

  • Lúc đầu, các phần tử sẽ được chuyển vào tập hợp đầu tiên - như trong sơ đồ sau
    Có chức năng xoay trong Python không?

Sau khi hoàn thành bộ này, arry[] sẽ bằng [15, 12, 13, 14, 19, 16, 17, 18, 23, 20, 21, 22, 11, 23, 24, 25, 26]

  • Sau đó, trong tập thứ hai. arry sẽ là [15, 16, 13, 14, 19, 20, 17, 18, 23, 24, 21, 22, 11, 12, 24, 25, 26]
  • Trong bộ thứ ba. arry sẽ là [15, 16, 17, 14, 19, 20, 21, 18, 23, 24, 25, 11, 12, 13, 26]
  • Cuối cùng, trong tập thứ tư. arry sẽ là [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 11, 12, 13, 14]

Ví dụ

đầu ra

The array after rotation:
[15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 11, 12, 13, 14]

Trong phương pháp trên

Phương pháp 4. Bằng cách sử dụng Cắt lát danh sách

Trong phương pháp này, chúng tôi sẽ sử dụng danh sách cắt để xoay các phần tử của một mảng

Ví dụ

đầu ra

The List is: [11, 12, 13, 14, 15, 16, 17, 18]
The rotated list is: 
[15, 16, 17, 18, 11, 12, 13, 14]

Nếu chúng ta muốn xoay mảng nhiều hơn chiều dài của nó, chúng ta có thể sử dụng phương thức mod

Giả sử mảng mà chúng ta muốn xoay theo "E" có kích thước "K" và "E" lớn hơn "K". Trong trường hợp này, chúng ta phải tính toán (E%K) và sau đó chúng ta có thể xoay theo đầu ra sau khi tính toán mod

Phần kết luận

Trong bài viết này, chúng ta đã thảo luận về cách sử dụng các phương thức khác nhau để xoay mảng đã cho bằng cách sử dụng Python