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.
- NumPy dizisine dönüştür
.T
Bununla transpoze edin.
pandas.DataFrame
Buna dönüştür.T
Bununla 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.
- İLİŞKİLİ:Python’da listeleri, demetleri ve sözlükleri fonksiyon argümanları olarak genişletme ve iletme
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İŞKİLİ:Python liste kavrayışları nasıl kullanılır?
- İLİŞKİLİ:Python’da listeleri ve demetleri birbirine dönüştürme: 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'>
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]]