Anda memerlukan kursus penyegaran tentang pengirisan array ndarray numpy. Juga dikenal sebagai pengindeksan array multi-dimensi, lihat: docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html Array mengiris ndarray Anda menggunakan tanda kurung siku, dan menggunakan pemisah koma untuk memisahkan berapa banyak dari masing-masing dimensi yang Anda inginkan. Ini akan terlihat seperti (tidak persis) ini: your_array[50:100, 7, :]yang meratakan objek 3d menjadi 2d, hanya menggunakan potongan nomor 7 untuk dimensi ke-2.
>>> arr = numpy.zeros((50,100,25))>>> arr.shape# (50, 100, 25)>>> new_arr = arr.reshape(5000,25)>>> new_arr.shape # (5000, 25)# One shape dimension can be -1. # In this case, the value is inferred from # the length of the array and remaining dimensions.>>> another_arr = arr.reshape(-1, arr.shape[-1])>>> another_arr.shape# (5000, 25)
Sedikit generalisasi untuk jawaban Alexander - np.reshape dapat menggunakan -1 sebagai argumen, yang berarti "ukuran larik total dibagi dengan produk dari semua dimensi lain yang terdaftar":
misalnya untuk meratakan semua kecuali dimensi terakhir:
your_array[50:100, 7, :]
yang meratakan objek 3d menjadi 2d, hanya menggunakan potongan nomor 7 untuk dimensi ke-2.Jawaban:
Lihatlah numpy.reshape .
sumber
Sedikit generalisasi untuk jawaban Alexander - np.reshape dapat menggunakan -1 sebagai argumen, yang berarti "ukuran larik total dibagi dengan produk dari semua dimensi lain yang terdaftar":
misalnya untuk meratakan semua kecuali dimensi terakhir:
sumber
Sedikit generalisasi untuk jawaban Peter - Anda dapat menentukan rentang di atas bentuk larik asli jika Anda ingin melampaui larik tiga dimensi.
misalnya untuk meratakan semua kecuali dua dimensi terakhir :
EDIT: Sedikit generalisasi untuk jawaban saya sebelumnya - Anda dapat, tentu saja, juga menentukan rentang di awal pembentukan ulang juga:
sumber
Pendekatan alternatif adalah dengan menggunakan
numpy.resize()
seperti pada:sumber