Pythoni loenditüüpi kahemõõtmelise massiivi ridade ja veergude vahetamine

Äri

Pythoni standardne loenditüüp võib esindada kahemõõtmelist massiivi loendite loendina.

Selles jaotises selgitatakse, kuidas vahetada selle kahemõõtmelise massiivi ridu ja veerge.

    1. Teisenda NumPy massiivi
    2. .TTransponeeri sellega.
    1. pandas.DataFrameTeisenda selliseks
    2. .TTransponeeri sellega.
  • Ümberpaigutamine sisseehitatud funktsiooniga zip()

Lihtsam on kasutada NumPy või pandas, kuid kui te ei soovi NumPy või pandas't importida ainult transponeerimiseks, võite kasutada transponeerimiseks funktsiooni zip().

Esialgne kahemõõtmeline massiivi on määratletud järgmiselt

import numpy as np
import pandas as pd

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

Konverteeritud NumPy massiivi ndarray ja transponeeritud .T-ga

Genereerib NumPy massiivi ndarray algsest kahemõõtmelisest massiivist ja saab transponeeritud objekti atribuudiga .T.

Kui soovite lõpuks Pythoni loenditüüpi objekti, teisendage see edasi loendiks meetodi tolist() abil.

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

Lisaks atribuudile .T võib kasutada ka ndarray meetodit transpose() ja funktsiooni numpy.transpose().

Konverteeritakse pandas.DataFrame'iks ja transponeeritakse .T-ga.

Looge algsest kahemõõtmelisest massiivist pandas.DataFrame ja saate transponeeritud objekti atribuudiga .T.

Kui soovite lõpuks Pythoni loenditüüpi objekti, saate numpy.ndarray atribuudiga values ja konverteerige see seejärel loendiks meetodi tolist() abil.

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

Ümberpaigutamine sisseehitatud funktsiooniga zip()

Transponeerib kahemõõtmelise massiivi, kasutades sisseehitatud funktsiooni zip().

zip() on funktsioon, mis tagastab iteraatori, mis võtab kokku mitme iteraatori elemendid (loendid, toplid jne). Seda kasutatakse näiteks mitme loendi käivitamisel for-silmuses.

Lisaks kasutab funktsioon mehhanismi, mille abil saab loetelu laiendada ja edastada, kui funktsiooni argument on tähistatud tärniga.

Ümberpaigutusi võib teha järgmiselt.

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

Nagu see on, on elemendid sees tuplid. Seega, kui soovite teha sellest loendi, kasutage list(), mis teisendab tupli loendi loeteluks loendi mõistes.

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

Järgnevalt kirjeldatakse protsessi samm-sammult.

Loendi elemendid laiendatakse tärniga, laiendatud elemendid rühmitatakse funktsiooni zip() abil ja seejärel teisendatakse tupel loendiks loendi mõistmise märkega.

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