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_likemảng đầu vào
góc trôi nổiGóc quay tính bằng độ
trục bộ gồm 2 số nguyên, tùy chọnHai 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ọnNế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ọnMả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ọnThứ 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ọnTham 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
Đầ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ọnGiá 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ọnXá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ử
Ta sẽ được mảng sau khi xoay mảng 4 phần tử
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
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