Saya mendapatkan beberapa hasil dalam bentuk np.arrays ukuran (no_of_rows, 2), di mana no_of_rows bervariasi dari array ke array.

Saya ingin menyimpan hasil ini ke disk untuk penggunaan nanti (merencanakan). Dengan cara apa pun, tidak masalah bagaimana caranya, tetapi jika memungkinkan dengan cara yang paling efisien dalam hal MEMBUKA KEMBALI / MENGGUNAKAN waktu yang tepat.

Saya bisa melakukan apa saja dengan array 2D ini. Pikiran saya adalah membuat file .npy yang berisi tensor bentuk 3D (no_of_matrices, ? , 2), tapi itu ? adalah masalah saya. Setiap larik 2D berpotensi memiliki no_of_rows yang berbeda. Jadi saya meninggalkan ide ini.

Sekarang saya membuat daftar np.arrays 2D ini. Saya sekarang ingin menyimpan daftar itu ke disk. Saya telah membaca tentang np.savez, tetapi ini tidak mempertahankan urutan penyimpanan. Artinya, ketika memuat kembali ke memori, saya tidak akan tahu larik mana, selain dari banyak pernyataan if untuk memeriksa no_of_lines dari setiap larik dan mencocokkannya dengan apa artinya ketika merencanakannya nanti.

Apakah saya memiliki kesempatan untuk menyimpan array ini dalam 1 file TUNGGAL, atau apakah saya hanya perlu membuat banyak file, dinamai dengan cara yang berbeda, satu untuk setiap array 2D, dan kemudian mengakses file-file ini satu per satu saat merencanakan?

[PS: Saya hanya dapat memiliki maksimum 100-ish dari array 2D seperti itu, biasanya memiliki kurang dari 10.]

Terima kasih

1
velenos14 27 Mei 2021, 12:05

2 jawaban

Jawaban Terbaik

Anda dapat menggunakan npz dengan argumen kunci untuk mengidentifikasi setiap array dan dengan demikian tidak lagi memiliki masalah urutan yang tidak dipertahankan.

a = np.arange(10)
b = np.arange(5)*-1

f1={'my_key1':a}
f2={'my_key2':b}

np.savez_compressed('my_archive.npz', **f1, **f2)

Baca arsip Anda sebagai berikut:

>>>print(np.load('my_archive.npz')['my_key2'])
[ 0 -1 -2 -3 -4]

Sunting

Seperti disebutkan dalam komentar, solusi yang disajikan di atas tidak dapat dijalankan jika kita ingin mendaftarkan N np.arrays secara otomatis. Oleh karena itu solusinya adalah membuat kamus tunggal dengan entri N:

f = {}
f['my_key1'] = a
f['my_key2'] = b

np.savez_compressed('my_archive.npz', **f)
0
lefevrej 27 Mei 2021, 12:36

Anda dapat menyimpan larik 2D ini ke file CSV.

Menggabungkan semua array menjadi satu terserah Anda: Anda dapat menggabungkan semua array menjadi satu dan hanya menyimpan satu file, atau Anda dapat menyimpan semua array yang Anda terima.

0
Be Chiller Too 27 Mei 2021, 09:51