Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ย้ายเมทริกซ์ใน Python หรือไม่


เปลี่ยนเมทริกซ์หมายความว่าเรากำลังเปลี่ยนคอลัมน์เป็นแถว มาทำความเข้าใจกันด้วยตัวอย่างว่าถ้าดูเหมือนหลังทรานสโพสแล้วเป็นอย่างไร

สมมติว่าคุณมีเมทริกซ์ดั้งเดิมประมาณ -

x = [[1,2][3,4][5,6]]

ในเมทริกซ์ด้านบน “x” เรามีสองคอลัมน์ ประกอบด้วย 1, 3, 5 และ 2, 4, 6

ดังนั้นเมื่อเราสลับระหว่างเมทริกซ์ "x" ด้านบน คอลัมน์จะกลายเป็นแถว ดังนั้นเมทริกซ์ที่ย้ายมาด้านบนจะหน้าตาประมาณนี้ -

x1 = [[1, 3, 5][2, 4, 6]]

ดังนั้นเราจึงมีเมทริกซ์ 'x1' อีกอันหนึ่ง ซึ่งถูกจัดระเบียบต่างกันโดยมีค่าต่างกันในที่ต่างๆ

ด้านล่างนี้คือสองวิธีในการทำสิ่งนี้ให้สำเร็จใน python -

วิธีที่ 1 - เมทริกซ์ทรานสโพสโดยใช้ Nested Loop -

#Original Matrix
x = [[1,2],[3,4],[5,6]]
result = [[0, 0, 0], [0, 0, 0]]
# Iterate through rows
for i in range(len(x)):
   #Iterate through columns
   for j in range(len(x[0])):
      result[j][i] = x[i][j]
   for r in Result
print(r)

ผลลัพธ์

[1, 3, 5]
[2, 4, 6]

วิธีที่ 2 - เมทริกซ์ทรานสโพสโดยใช้ Nested List Comprehension

#Original Matrix
x = [[1,2],[3,4],[5,6]]
result = [[x[j][i] for j in range(len(x))] for i in range(len(x[0]))]
for r in Result
   print(r)

ผลลัพธ์

[1, 3, 5]
[2, 4, 6]

ความเข้าใจรายการช่วยให้เราเขียนโค้ดที่กระชับและควรใช้บ่อยๆ ใน python

วิธีที่ 3 - Matrix Transpose โดยใช้ Zip

#Original Matrix
x = [[1,2],[3,4],[5,6]]
result = map(list, zip(*x))
for r in Result
   print(r)

ผลลัพธ์

[1, 3, 5]
[2, 4, 6]

วิธีที่ 4 - เมทริกซ์ทรานสโพสโดยใช้ numpy libraryNumpy library เป็นแพ็คเกจการประมวลผลอาร์เรย์ที่สร้างขึ้นเพื่อจัดการกับอาร์เรย์หลายมิติขนาดใหญ่อย่างมีประสิทธิภาพ

import numpy
#Original Matrix
x = [[1,2],[3,4],[5,6]]
print(numpy.transpose(x))

ผลลัพธ์

[[1 3 5]
[2 4 6]]