Apakah ada yang tahu cara mengekstrak kolom dari array multi-dimensi dengan Python?
240
Apakah ada yang tahu cara mengekstrak kolom dari array multi-dimensi dengan Python?
>>> import numpy as np
>>> A = np.array([[1,2,3,4],[5,6,7,8]])
>>> A
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
>>> A[:,2] # returns the third columm
array([3, 7])
Lihat juga: "numpy.arange" dan "membentuk kembali" untuk mengalokasikan memori
Contoh: (Mengalokasikan array dengan membentuk matriks (3x4))
nrows = 3
ncols = 4
my_array = numpy.arange(nrows*ncols, dtype='double')
my_array = my_array.reshape(nrows, ncols)
[row, col]
. koma terpisah.Mungkinkah Anda menggunakan array NumPy ? Python memiliki modul array , tetapi itu tidak mendukung array multi-dimensi. Daftar Python normal juga satu dimensi.
Namun, jika Anda memiliki daftar dua dimensi sederhana seperti ini:
maka Anda dapat mengekstrak kolom seperti ini:
Mengekstrak kolom kedua (indeks 1):
Atau sebagai alternatif, cukup:
sumber
Jika Anda memiliki array seperti
Kemudian Anda mengekstrak kolom pertama seperti itu:
Jadi hasilnya terlihat seperti ini:
sumber
saksikan berikut ini!
itu adalah hal yang sama seperti di atas kecuali entah bagaimana itu lebih rapi zip melakukan pekerjaan tetapi membutuhkan array tunggal sebagai argumen, sintaks * a membongkar array multidimensi menjadi argumen array tunggal
sumber
a2 = zip(*a); a2 = list(a2); a2[0]
Fungsi peta dalam Python adalah cara lain untuk pergi.
sumber
jika Anda ingin kolom kedua dapat Anda gunakan
sumber
arange()
di Python3 di luar numpy. Siapa saja?sumber
Operator itemgetter juga dapat membantu, jika Anda suka gaya peta-pengurangan python, daripada daftar pemahaman, untuk sedikit variasi!
sumber
Anda dapat menggunakan ini juga:
Catatan: Ini tidak berfungsi untuk array bawaan dan tidak selaras (mis. Np.array ([[1,2,3], [4,5,6,7]]))
sumber
Saya pikir Anda ingin mengekstrak kolom dari array seperti array di bawah ini
Sekarang jika Anda ingin mendapatkan kolom ketiga dalam format
Maka Anda harus terlebih dahulu membuat array menjadi matriks
Dan sekarang Anda dapat melakukan perhitungan elemen bijaksana seperti yang Anda lakukan di excel.
sumber
katakanlah kita memiliki
n X m
matriks (n
baris danm
kolom) katakanlah 5 baris dan 4 kolomUntuk mengekstrak kolom dalam python, kita bisa menggunakan daftar pemahaman seperti ini
Anda dapat mengganti 4 dengan jumlah kolom berapa pun yang dimiliki matriks Anda. Hasilnya adalah
[ [1,5,9,13,17],[2,10,14,18],[3,7,11,15,19],[4,8,12,16,20] ]
sumber
sumber
Satu lagi cara menggunakan matriks
sumber
Jika Anda memiliki array dua dimensi dalam Python (bukan numpy), Anda dapat mengekstrak semua kolom seperti itu,
Menjalankan kode ini akan menghasilkan,
Tentu saja, Anda dapat mengekstrak satu kolom berdasarkan indeks (mis.
columns[0]
)sumber
Meskipun menggunakan
zip(*iterable)
untuk merefleksikan daftar bersarang, Anda juga dapat menggunakan yang berikut jika panjang daftar bersarang bervariasi:menghasilkan:
Kolom pertama adalah sebagai berikut:
sumber
Yah agak terlambat ...
Dalam hal masalah kinerja dan data Anda berbentuk persegi panjang, Anda mungkin juga menyimpannya dalam satu dimensi dan mengakses kolom dengan mengiris misalnya ...
Yang rapi adalah ini sangat cepat. Namun , indeks negatif tidak berfungsi di sini! Jadi, Anda tidak dapat mengakses kolom atau baris terakhir dengan indeks -1.
Jika Anda memerlukan pengindeksan negatif, Anda dapat sedikit menyetel fungsi-fungsi accessor, misalnya
sumber
Jika Anda ingin mengambil lebih dari satu kolom, cukup gunakan slice:
sumber
Saya lebih suka petunjuk selanjutnya: memiliki nama matriks
matrix_a
dan menggunakancolumn_number
, misalnya:sumber
Cukup gunakan transpose (), maka Anda bisa mendapatkan kolom semudah Anda mendapatkan baris
sumber
Semua kolom dari matriks ke daftar baru:
sumber