Magpalit ng mga row at column ng two-dimensional array ng Python list type

Negosyo

Ang karaniwang uri ng listahan ng Python ay maaaring kumatawan sa isang two-dimensional array sa pamamagitan ng isang listahan ng mga listahan.

Ipinapaliwanag ng seksyong ito kung paano ipagpalit ang mga row at column ng two-dimensional array na ito.

    1. I-convert sa NumPy array
    2. .TTranspose gamit ito.
    1. pandas.DataFrameI-convert dito
    2. .TTranspose gamit ito.
  • Transposisyon na may built-in na function na zip()

Mas madaling gamitin ang NumPy o pandas, ngunit kung ayaw mong mag-import ng NumPy o pandas para lang sa transposition, maaari mong gamitin ang zip() function para mag-transpose.

Ang orihinal na two-dimensional array ay tinukoy bilang mga sumusunod

import numpy as np
import pandas as pd

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

Na-convert sa NumPy array ndarray at na-transpose gamit ang .T

Bumuo ng NumPy array ndarray mula sa orihinal na two-dimensional array at kunin ang transposed object na may attribute na .T.

Kung gusto mo ng Python list-type object sa dulo, higit pang i-convert ito sa isang listahan na may tolist() method.

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

Bilang karagdagan sa .T attribute, ang ndarray method na transpose() at ang function na numpy.transpose() ay maaari ding gamitin.

Na-convert sa pandas.DataFrame at na-transpose gamit ang .T

Bumuo ng pandas.DataFrame mula sa orihinal na two-dimensional array at kunin ang transposed object na may attribute na .T.

Kung gusto mo ng Python list-type object sa dulo, kumuha ng numpy.ndarray na may values ​​attribute, at pagkatapos ay i-convert ito sa isang listahan na may tolist() method.

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

Transposisyon na may built-in na function na zip()

Nag-transpose ng two-dimensional array gamit ang built-in na function na zip().

zip() ay isang function na nagbabalik ng iterator na nagbubuod sa mga elemento ng maramihang mga iterable (mga listahan, tuple, atbp.). Ginagamit ito kapag nagpapatakbo ng maraming listahan sa isang for loop, halimbawa.

Bilang karagdagan, ang function ay gumagamit ng isang mekanismo kung saan ang listahan ay maaaring palawakin at ipasa kung ang argumento ng function ay minarkahan ng isang asterisk.

Ang mga transposisyon ay maaaring gawin tulad ng sumusunod.

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

Tulad nito, ang mga elemento sa loob ay tuple. Samakatuwid, kung gusto mong gawin itong isang listahan, gamitin ang list(), na nagko-convert ng tuple sa isang listahan sa notasyon ng pag-unawa sa listahan.

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

Ang sumusunod ay isang hakbang-hakbang na pagkasira ng proseso.

Ang mga elemento ng listahan ay pinalawak na may asterisk, ang mga pinalawak na elemento ay pinagsama-sama sa zip() function, at pagkatapos ay ang tuple ay na-convert sa isang listahan na may listahan ng pang-unawa sa notasyon.

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