Saya memiliki kode Python yang outputnya adalah matriks berukuran, yang semua isinya adalah tipe float
. Jika saya menyimpannya dengan ekstensi .dat
ukuran file di urutan 500 MB. Saya membaca bahwa menggunakan sangat h5py
mengurangi ukuran file. Jadi, katakanlah saya memiliki array numpy 2D bernama A
. Bagaimana cara menyimpannya ke file h5py? Juga, bagaimana cara membaca file yang sama dan meletakkannya sebagai array numpy dalam kode yang berbeda, karena saya perlu melakukan manipulasi dengan array?
100
.dat
ekstensi?np.savetxt("output.dat",A,'%10.8e')
np.save('output.dat', A)
yang akan menyimpannya dalam format biner (lebih cepat, lebih sedikit ruang yang digunakan).A = np.loadtxt('output.dat',unpack=True)
h5py
bukankah membuat file lebih kecil dari itunp.save
? adalahh5py
lebih cepat darinp.save
untuk array dari ukuran yang diberikan dalam pertanyaan?Jawaban:
h5py menyediakan model kumpulan data dan grup . Yang pertama pada dasarnya adalah array dan yang terakhir dapat Anda anggap sebagai direktori. Masing-masing diberi nama. Anda harus melihat dokumentasi untuk API dan contohnya:
http://docs.h5py.org/en/latest/quick.html
Contoh sederhana di mana Anda membuat semua data dimuka dan hanya ingin menyimpannya ke file hdf5 akan terlihat seperti:
Anda kemudian dapat memuat data itu kembali menggunakan: '
Lihat dokumennya:
http://docs.h5py.org
Menulis ke file hdf5 bergantung pada h5py atau pytables (masing-masing memiliki API python berbeda yang berada di atas spesifikasi file hdf5). Anda juga harus melihat format biner sederhana lainnya yang disediakan oleh numpy secara native seperti
np.save
,np.savez
dll:http://docs.scipy.org/doc/numpy/reference/routines.io.html
sumber
data.h5
ada, tetapi saya tidak dapat melihatnya dengan HDFView. Saya bisa membaca isinya dengan h5py, tetapi tidak memeriksanya dengan HDFView. Tahu kenapa?Cara yang lebih bersih untuk menangani buka / tutup file dan menghindari kebocoran memori:
Persiapan:
Menulis:
Baca:
sumber
with
fitur Python dikenal sebagai manajer konteks. Ini akan memastikan file ditutup setelah digunakan. Informasi lebih lanjut tersedia di dokumentasi resmi: docs.python.org/3/library/contextlib.html