Xoay vòng hoạt động như thế nào trong Python?

PIL -- Python Image Library là một mô-đun chứa các chức năng dựng sẵn để thao tác và làm việc với hình ảnh làm đầu vào cho các chức năng

PIL cung cấp

Image.open[r"URL of the image"]
0 tích hợp để xoay hình ảnh theo một góc trong Python

cú pháp

image.rotate[angle]

Để tải một hình ảnh hoặc chuyển một hình ảnh vào hàm rotate[], chúng ta cần sử dụng đoạn mã dưới đây

Image.open[r"URL of the image"]

Chúng ta cần sử dụng đoạn mã dưới đây để hiển thị hình ảnh

image.show[]

ví dụ 1

from PIL import Image 

 
img = Image.open[r"C:\Users\HP\OneDrive\Desktop\Penskull Education.png"] 

rotate_img= img.rotate[125]

rotate_img.show[] 

Trong đoạn mã trên, chúng tôi đã xoay hình ảnh đầu vào một góc 125 độ

Hình ảnh đầu vào

Hình ảnh đầu vào

đầu ra

125 độ – xoay

ví dụ 2

from PIL import Image 

 
img = Image.open[r"C:\Users\HP\OneDrive\Desktop\Penskull Education -- 01.png"] 

rotate_img= img.rotate[45]

rotate_img.show[] 

Trong ví dụ này, hình ảnh đang được xoay một góc 45 độ

đầu ra

45 độ – xoay

Kỹ thuật 2. OpenCV để xoay hình ảnh theo một góc trong Python

Image.open[r"URL of the image"]
1 là một mô-đun liên quan đến các ứng dụng thời gian thực liên quan đến thị giác máy tính. Nó chứa một số chức năng tích hợp tốt để xử lý hình ảnh dưới dạng đầu vào từ người dùng

OpenCV hoạt động tốt với một thư viện xử lý hình ảnh khác có tên ‘

Image.open[r"URL of the image"]
2‘ để thao tác và làm việc với hình ảnh

Image.open[r"URL of the image"]
3 được sử dụng để xoay hình ảnh theo một góc trong Python

cú pháp

imutils.rotate[image, angle=angle]

cú pháp. Để đọc hình ảnh dưới dạng đầu vào bằng OpenCV

cv2.imread[r"image path/URL"]

cú pháp. Để hiển thị hình ảnh bằng OpenCV

cv2.imshow["output--msg",image]

Thí dụ

import cv2
import imutils
image = cv2.imread[r"C:\Users\HP\OneDrive\Desktop\Penskull Education.png"]

rot = imutils.rotate[image, angle=45]
cv2.imshow["Rotated", rot]
cv2.waitKey[0]

đầu ra

Xoay vòng bằng OpenCV

Phần kết luận

Vì vậy, trong bài viết này, chúng ta đã thảo luận về nhiều cách khác nhau để xoay hình ảnh đầu vào theo một góc trong Python bằng các thư viện khác nhau

Tôi thực sự khuyên độc giả nên xem qua phần Cắt hình ảnh trong Python, để hiểu thêm về các chức năng có sẵn để thao tác với hình ảnh trong Python

Một vị tướng xoay n sang trái [y dương trong cuộc gọi đến rotate] hoặc phải [y âm] sau đó

def rotate[l, y=1]:
   if len[l] == 0:
      return l
   y = y % len[l]    # Why? this works for negative y

   return l[y:] + l[:y]

Nếu bạn muốn hướng quay giống như ví dụ của bạn, chỉ cần phủ định y trong xoay

def rotate[l, y=1]:
   if len[l] == 0:
      return l
   y = -y % len[l]     # flip rotation direction

   return l[y:] + l[:y]

Trong bài viết này, chúng ta sẽ học cách xoay một danh sách trong Python. Chúng tôi cũng sẽ sử dụng một số chức năng tích hợp, cách tiếp cận đơn giản và một số mã tùy chỉnh. Trước tiên chúng ta hãy xem nhanh danh sách trong Python là gì

Danh sách Python

Python có một kiểu dữ liệu tích hợp được gọi là danh sách. Nó giống như một tập hợp các mảng với các phương pháp khác nhau. Dữ liệu bên trong danh sách có thể thuộc bất kỳ loại nào, chẳng hạn như số nguyên, chuỗi hoặc giá trị float hoặc thậm chí là loại danh sách. Danh sách sử dụng các giá trị được phân tách bằng dấu phẩy trong dấu ngoặc vuông để lưu trữ dữ liệu. Danh sách có thể được xác định bằng cách sử dụng bất kỳ tên biến nào và sau đó gán các giá trị khác nhau cho danh sách trong dấu ngoặc vuông. Danh sách được sắp xếp, có thể thay đổi và cho phép các giá trị trùng lặp

list1 = ["Ram", "Arun", "Kiran"]
list2 = [16, 78, 32, 67]
list3 = ["apple", "mango", 16, "cherry", 3.4]

Xoay danh sách có nghĩa là đẩy và kéo các phần tử từ cả hai đầu của danh sách. Trong phép quay trái, mỗi phần tử của danh sách được dịch chuyển sang bên trái của nó một vị trí và phần tử đầu tiên được thêm vào cuối danh sách. Tương tự, trong phép quay phải, mỗi phần tử của danh sách được dịch chuyển sang bên phải của nó một vị trí và phần tử cuối cùng được thêm vào đầu danh sách. Quá trình này được thực hiện theo một số lần xác định. Bây giờ, chúng ta sẽ thảo luận về các phương pháp khác nhau để xoay danh sách. Các phương thức này có thể thực hiện cả Xoay trái cũng như Xoay phải bằng cách lấy số lần xoay làm đầu vào

Thí dụ. Xoay một danh sách bằng cách sử dụng kỹ thuật cắt lát

Phương pháp này chỉ đơn giản là xoay một danh sách trong mã một dòng. Đây là phương pháp chung và hiệu quả nhất để đạt được vòng quay của danh sách. Nó thực hiện thao tác cắt lát bằng cách lấy số vòng quay. Trong trường hợp này, nó xoay danh sách l1, 3 dấu cách sang bên phải và bên trái. Nó nối phần được cắt lát sau của danh sách với phần được cắt lát ban đầu của danh sách. Bạn có thể cung cấp bất kỳ số vòng quay nào theo nhu cầu

#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print["Right rotation of List by 3 : " + str[l1]] 


Danh sách gốc. [1, 4, 6, 7, 2]
Xoay trái Danh sách theo 3. [7, 2, 1, 4, 6]
Xoay phải Danh sách theo 3. [1, 4, 6, 7, 2]

Thí dụ. Xoay một Danh sách bằng cách sử dụng Danh sách Hiểu

Phương pháp này được thực hiện trong một dòng bằng cách sử dụng Danh sách hiểu. Trong phương pháp này, chúng tôi chỉ gán lại chỉ mục cho từng giá trị cho một vị trí cụ thể sau khi xoay. Chỉ cần thay thế 3 bằng bất kỳ số vòng quay nào bạn muốn

#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = [l1[[i + 3] % len[l1]] for i, x in enumerate[l1]] 
print ["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3 
l1 = [l1[[i - 3] % len[l1]] for i, x in enumerate[l1]] 
print ["Right rotation of List by 3 : " + str[l1]] 


Danh sách gốc. [1, 4, 6, 7, 2]
Xoay trái Danh sách theo 3. [7, 2, 1, 4, 6]
Xoay phải Danh sách theo 3. [1, 4, 6, 7, 2]

Thí dụ. Xoay Danh sách bằng Mô-đun Bộ sưu tập

Phương pháp này nhập khẩu deque từ mô-đun collections của Python. Lớp deque[] cung cấp hàm

#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print["Right rotation of List by 3 : " + str[l1]] 
0 để thực hiện Xoay danh sách. Đây cũng là một cách hiệu quả để xoay danh sách vì nó nhanh hơn kỹ thuật cắt lát. Nó được tối ưu hóa để kéo và đẩy ở cả hai đầu

deque[] - Nó lấy một danh sách làm đối số và chuyển đổi nó thành một đối tượng deque

#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print["Right rotation of List by 3 : " + str[l1]] 
0 - Nó được áp dụng cho đối tượng deque và lấy số vòng quay làm đối số. Nó chỉ đơn giản là xoay danh sách

Chỉ mục tiêu cực được cung cấp để thực hiện xoay trái trong khi chỉ mục tích cực được đưa ra để thực hiện xoay phải

from collections import deque 

#input list
l1 = [1, 4, 6, 7, 2] 
print ["Original List : " + str[l1]] 

#left rotate by 3 
l1 = deque[l1] 
l1.rotate[-3] 
l1 = list[l1] 
print ["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3
l1 = deque[l1] 
l1.rotate[3] 
l1 = list[l1] 
print ["Right rotation of List by 3 : " + str[l1]] 


Danh sách gốc. [1, 4, 6, 7, 2]
Xoay trái Danh sách theo 3. [7, 2, 1, 4, 6]
Xoay phải Danh sách theo 3. [1, 4, 6, 7, 2]

Thí dụ. Xoay phải danh sách bằng cách nối các phần tử vào danh sách mới

Phương pháp này làm tăng độ phức tạp không gian của chương trình. Phương pháp này tạo một danh sách trống và lưu danh sách đã sửa đổi vào một danh sách mới. Nó hoạt động tương tự như hiểu danh sách. Nó lặp lại danh sách đầu tiên từng cái một và sau đó đặt các phần tử vào vị trí phù hợp trong danh sách thứ hai bằng cách sử dụng hàm

#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print["Right rotation of List by 3 : " + str[l1]] 
3

#number of rotations
num = 3
l1 = [1, 2, 3, 4, 5, 6] 
l2 = [] 

# Will add values from n to the new list 
for ele in range[len[l1] - num, len[l1]]:
    l2.append[l1[ele]]
# Will add the values before n to the end of new list
for ele in range[0, len[l1] - num]:
    l2.append[l1[ele]] 

print["Right rotation of List by 3 : " + str[l2]] 


Xoay phải Danh sách theo 3. [4, 5, 6, 1, 2, 3]

Thí dụ. Xoay phải danh sách bằng len[] và Kỹ thuật cắt lát

Phương pháp này cũng liên quan đến kỹ thuật Slicing nhưng cùng với chức năng

#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print["Right rotation of List by 3 : " + str[l1]] 
4

#number of rotations
num = 3

#input list
l1 = [1, 2, 3, 4, 5, 6] 

l1 = [l1[len[l1] - num:len[l1]] + l1[0:len[l1] - num]] 

print["Right rotation of List by 3 : " + str[l1]] 


Xoay phải Danh sách theo 3. [4, 5, 6, 1, 2, 3]

Thí dụ. Xoay Danh sách bằng Mô-đun NumPy

Mô-đun Numpy của Python cung cấp hàm roll[] tích hợp để thực hiện phép quay trên một mảng. Đầu tiên, nó tạo một mảng bằng cách chuyển một dải [giá trị đầu, giá trị cuối [không bao gồm]] bằng cách sử dụng hàm

#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print["Right rotation of List by 3 : " + str[l1]] 
5. Sau đó, mảng và số phép quay được truyền dưới dạng đối số cho hàm
#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print["Right rotation of List by 3 : " + str[l1]] 
6

import numpy

arr = numpy.arange[1,10] 
print["Orignial array : ", arr]

#right rotate by 3
print["Right rotation by 3 : ", numpy.roll[arr,3]]

#left rotate by 3
print["Left rotation by 3 : ", numpy.roll[arr,-3]]


Mảng ban đầu. [1 2 3 4 5 6 7 8 9]
Xoay phải 3. [7 8 9 1 2 3 4 5 6]
Xoay trái 3. [4 5 6 7 8 9 1 2 3]

Phần kết luận

Trong bài viết này, chúng ta đã học cách xoay danh sách bằng cách sử dụng một số hàm có sẵn như deque[],

#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print["Right rotation of List by 3 : " + str[l1]] 
4,
#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = l1[3:] + l1[:3] 
print["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3
l1 = l1[-3:] + l1[:-3] 
print["Right rotation of List by 3 : " + str[l1]] 
3,
#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = [l1[[i + 3] % len[l1]] for i, x in enumerate[l1]] 
print ["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3 
l1 = [l1[[i - 3] % len[l1]] for i, x in enumerate[l1]] 
print ["Right rotation of List by 3 : " + str[l1]] 
0 và cũng sử dụng kỹ thuật
#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = [l1[[i + 3] % len[l1]] for i, x in enumerate[l1]] 
print ["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3 
l1 = [l1[[i - 3] % len[l1]] for i, x in enumerate[l1]] 
print ["Right rotation of List by 3 : " + str[l1]] 
1 và
#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = [l1[[i + 3] % len[l1]] for i, x in enumerate[l1]] 
print ["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3 
l1 = [l1[[i - 3] % len[l1]] for i, x in enumerate[l1]] 
print ["Right rotation of List by 3 : " + str[l1]] 
2. Chúng tôi cũng đã sử dụng một số mã tùy chỉnh. Chúng ta đã thảo luận rằng trong số tất cả các phương pháp thì
#input list
l1 = [1, 4, 6, 7, 2] 
print["Original List : " + str[l1]] 

#left rotate by 3 
l1 = [l1[[i + 3] % len[l1]] for i, x in enumerate[l1]] 
print ["Left rotation of List by 3 : " + str[l1]] 

#right rotate by 3 
l1 = [l1[[i - 3] % len[l1]] for i, x in enumerate[l1]] 
print ["Right rotation of List by 3 : " + str[l1]] 
3 là phương pháp hiệu quả nhất để thực hiện thao tác xoay vòng danh sách. Tất cả các phương thức này có Độ phức tạp thời gian bằng 0[n] do một lần lặp duy nhất trên các phần tử của danh sách

Tất cả những gì về phương thức rotate[]?

rotate[] có trong java. sử dụng. lớp bộ sưu tập. Nó được sử dụng để xoay các phần tử có trong danh sách Bộ sưu tập đã chỉ định theo một khoảng cách nhất định .

Chủ Đề