ประเภทรายการ Python มาตรฐานสามารถแสดงอาร์เรย์สองมิติตามรายการ
ส่วนนี้อธิบายวิธีการสลับแถวและคอลัมน์ของอาร์เรย์สองมิตินี้
- แปลงเป็นอาร์เรย์ NumPy
.T
ย้ายด้วยสิ่งนี้
pandas.DataFrame
แปลงเป็นสิ่งนี้.T
ย้ายด้วยสิ่งนี้
- การขนย้ายด้วยฟังก์ชัน zip() ในตัว
ใช้ NumPy หรือแพนด้าได้ง่ายกว่า แต่ถ้าคุณไม่ต้องการนำเข้า NumPy หรือแพนด้าเพียงเพื่อการขนย้าย คุณสามารถใช้ฟังก์ชัน zip() เพื่อย้าย
อาร์เรย์สองมิติดั้งเดิมถูกกำหนดดังนี้
import numpy as np
import pandas as pd
l_2d = [[0, 1, 2], [3, 4, 5]]
แปลงเป็น NumPy array ndarray และย้ายด้วย .T
สร้าง NumPy array ndarray จากอาร์เรย์สองมิติดั้งเดิมและรับอ็อบเจกต์ที่ย้ายด้วยแอตทริบิวต์ .T
หากคุณต้องการอ็อบเจกต์ประเภทรายการ Python ในตอนท้าย ให้แปลงเป็นรายการเพิ่มเติมด้วยเมธอด tolist()
arr_t = np.array(l_2d).T
print(arr_t)
print(type(arr_t))
# [[0 3]
# [1 4]
# [2 5]]
# <class 'numpy.ndarray'>
l_2d_t = np.array(l_2d).T.tolist()
print(l_2d_t)
print(type(l_2d_t))
# [[0, 3], [1, 4], [2, 5]]
# <class 'list'>
นอกจากแอตทริบิวต์ .T แล้ว ยังสามารถใช้เมธอด ndarray transpose() และฟังก์ชัน numpy.transpose() ได้
แปลงเป็น pandas.DataFrame และย้ายด้วย .T
สร้าง pandas.DataFrame จากอาร์เรย์สองมิติดั้งเดิมและรับอ็อบเจกต์ที่ย้ายด้วยแอตทริบิวต์ .T
หากคุณต้องการอ็อบเจกต์ประเภทรายการ Python ในตอนท้าย ให้รับ numpy.ndarray ด้วยแอตทริบิวต์ values แล้วแปลงเป็นรายการด้วยเมธอด tolist()
df_t = pd.DataFrame(l_2d).T
print(df_t)
print(type(df_t))
# 0 1
# 0 0 3
# 1 1 4
# 2 2 5
# <class 'pandas.core.frame.DataFrame'>
l_2d_t = pd.DataFrame(l_2d).T.values.tolist()
print(l_2d_t)
print(type(l_2d_t))
# [[0, 3], [1, 4], [2, 5]]
# <class 'list'>
การขนย้ายด้วยฟังก์ชัน zip() ในตัว
ย้ายอาร์เรย์สองมิติโดยใช้ฟังก์ชัน zip() ในตัว
zip() เป็นฟังก์ชันที่คืนค่า iterator ที่สรุปองค์ประกอบของ iterables หลายรายการ (lists, tuples เป็นต้น) ใช้เมื่อเรียกใช้หลายรายการใน for loop เป็นต้น
นอกจากนี้ ฟังก์ชันนี้ใช้กลไกที่สามารถขยายและส่งรายการได้หากอาร์กิวเมนต์ของฟังก์ชันถูกทำเครื่องหมายด้วยเครื่องหมายดอกจัน
การขนย้ายสามารถทำได้ดังนี้
l_2d_t_tuple = list(zip(*l_2d))
print(l_2d_t_tuple)
print(type(l_2d_t_tuple))
# [(0, 3), (1, 4), (2, 5)]
# <class 'list'>
print(l_2d_t_tuple[0])
print(type(l_2d_t_tuple[0]))
# (0, 3)
# <class 'tuple'>
ตามที่เป็นอยู่ องค์ประกอบภายในเป็นสิ่งอันดับ ดังนั้น หากคุณต้องการสร้างเป็นรายการ ให้ใช้ list() ซึ่งแปลง tuple เป็นรายการในรูปแบบ list comprehension
- ที่เกี่ยวข้อง:วิธีใช้ Python list comprehensions
- ที่เกี่ยวข้อง:การแปลงรายการและทูเพิลให้กันและกันใน Python: list(), tuple()
l_2d_t = [list(x) for x in zip(*l_2d)]
print(l_2d_t)
print(type(l_2d_t))
# [[0, 3], [1, 4], [2, 5]]
# <class 'list'>
print(l_2d_t[0])
print(type(l_2d_t[0]))
# [0, 3]
# <class 'list'>
ต่อไปนี้เป็นรายละเอียดทีละขั้นตอนของกระบวนการ
องค์ประกอบของรายการถูกขยายด้วยเครื่องหมายดอกจัน องค์ประกอบที่ขยายจะถูกจัดกลุ่มพร้อมกับฟังก์ชัน zip() จากนั้นทูเพิลจะถูกแปลงเป็นรายการที่มีสัญลักษณ์แสดงความเข้าใจรายการ
print(*l_2d)
# [0, 1, 2] [3, 4, 5]
print(list(zip([0, 1, 2], [3, 4, 5])))
# [(0, 3), (1, 4), (2, 5)]
print([list(x) for x in [(0, 3), (1, 4), (2, 5)]])
# [[0, 3], [1, 4], [2, 5]]