Hoán đổi các hàng và cột của kiểu danh sách Python hai chiều

Kinh doanh

Kiểu danh sách Python tiêu chuẩn có thể đại diện cho một mảng hai chiều bằng một danh sách các danh sách.

Phần này giải thích cách hoán đổi các hàng và cột của mảng hai chiều này.

    1. Chuyển đổi sang mảng NumPy
    2. .TChuyển đổi với cái này.
    1. pandas.DataFrameChuyển đổi sang cái này
    2. .TChuyển đổi với cái này.
  • Chuyển vị với hàm tích hợp zip ()

Sử dụng NumPy hoặc gấu trúc sẽ dễ dàng hơn, nhưng nếu bạn không muốn nhập NumPy hoặc gấu trúc chỉ để chuyển vị, bạn có thể sử dụng hàm zip () để chuyển vị.

Mảng hai chiều ban đầu được định nghĩa như sau

import numpy as np
import pandas as pd

l_2d = [[0, 1, 2], [3, 4, 5]]

Được chuyển đổi thành ndarray mảng NumPy và được chuyển đổi bằng .T

Tạo một ndarray mảng NumPy từ mảng hai chiều ban đầu và nhận đối tượng được chuyển vị với thuộc tính .T.

Nếu cuối cùng bạn muốn có một đối tượng kiểu danh sách Python, hãy chuyển đổi thêm nó thành một danh sách bằng phương thức 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'>

Ngoài thuộc tính .T, phương thức ndarray transpose () và hàm numpy.transpose () cũng có thể được sử dụng.

Được chuyển đổi thành gấu trúc.DataFrame và được chuyển đổi bằng .T

Tạo một pandas.DataFrame từ mảng hai chiều ban đầu và lấy đối tượng được hoán vị bằng thuộc tính .T.

Nếu cuối cùng bạn muốn một đối tượng kiểu danh sách Python, hãy lấy numpy.ndarray với thuộc tính giá trị, sau đó chuyển đổi nó thành một danh sách bằng phương thức 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'>

Chuyển vị với hàm tích hợp zip ()

Chuyển đổi mảng hai chiều bằng cách sử dụng hàm tích hợp zip ().

zip () là một hàm trả về một trình lặp tóm tắt các phần tử của nhiều tệp lặp (danh sách, bộ giá trị, v.v.). Ví dụ, nó được sử dụng khi chạy nhiều danh sách trong vòng lặp for.

Ngoài ra, hàm sử dụng một cơ chế theo đó danh sách có thể được mở rộng và chuyển qua nếu đối số hàm được đánh dấu bằng dấu hoa thị.

Chuyển vị có thể được thực hiện như sau.

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'>

Như nó vốn có, các phần tử bên trong là các bộ giá trị. Do đó, nếu bạn muốn đặt nó thành một danh sách, hãy sử dụng list (), chuyển đổi một bộ giá trị thành một danh sách trong ký hiệu hiểu danh sách.

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'>

Sau đây là phân tích từng bước của quy trình.

Các phần tử của danh sách được mở rộng bằng dấu hoa thị, các phần tử được mở rộng được nhóm lại với nhau bằng hàm zip (), sau đó tuple được chuyển đổi thành một danh sách với ký hiệu hiểu danh sách.

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]]
Copied title and URL