İki boyutlu bir Python liste türü dizisinin satırlarını ve sütunlarını değiştirin

Standart Python liste türü, bir liste listesiyle iki boyutlu bir diziyi temsil edebilir.

Bu bölüm, bu iki boyutlu dizinin satır ve sütunlarının nasıl değiştirileceğini açıklar.

    1. NumPy dizisine dönüştür
    2. .TBununla transpoze edin.
    1. pandas.DataFrameBuna dönüştür
    2. .TBununla transpoze edin.
  • Yerleşik işlev zip() ile aktarma

NumPy veya pandaları kullanmak daha kolaydır, ancak NumPy veya pandaları yalnızca aktarma için içe aktarmak istemiyorsanız, devrik için zip() işlevini kullanabilirsiniz.

Orijinal iki boyutlu dizi aşağıdaki gibi tanımlanır

import numpy as np
import pandas as pd

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

NumPy dizisi ndarray’e dönüştürülür ve .T ile aktarılır

Orijinal iki boyutlu diziden bir NumPy dizisi ndarray oluşturun ve aktarılan nesneyi .T özniteliğiyle alın.

Sonunda bir Python liste tipi nesne istiyorsanız, onu ayrıca tolist() yöntemiyle bir listeye dönüştürün.

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 niteliğine ek olarak, ndarray yöntemi transpose() ve numpy.transpose() işlevi de kullanılabilir.

pandas.DataFrame’e dönüştürüldü ve .T ile aktarıldı

Orijinal iki boyutlu diziden bir pandas.DataFrame oluşturun ve aktarılan nesneyi .T özniteliğiyle alın.

Sonunda Python liste tipi bir nesne istiyorsanız, numpy.ndarray’i değerler özniteliğiyle alın ve ardından onu tolist() yöntemiyle bir listeye dönüştürün.

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

Yerleşik işlev zip() ile aktarma

Yerleşik zip() işlevini kullanarak iki boyutlu bir diziyi transpoze eder.

zip(), birden çok yinelenebilir öğenin (listeler, demetler, vb.) öğelerini özetleyen bir yineleyici döndüren bir işlevdir. Örneğin, bir for döngüsünde birden çok liste çalıştırırken kullanılır.

Ek olarak, işlev, işlev bağımsız değişkeni bir yıldız işaretiyle işaretlenmişse listenin genişletilip iletilebileceği bir mekanizma kullanır.

Transpozisyonlar aşağıdaki gibi yapılabilir.

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

Olduğu gibi, içindeki elemanlar demetlerdir. Bu nedenle, onu bir liste yapmak istiyorsanız, bir demeti liste anlama gösteriminde bir listeye dönüştüren list()’i kullanın.

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

Aşağıdaki, sürecin adım adım dökümüdür.

Listenin öğeleri bir yıldız işaretiyle genişletilir, genişletilmiş öğeler zip() işleviyle birlikte gruplandırılır ve ardından demet, liste anlama notasyonu ile bir listeye dönüştürülür.

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