คำถามติดแท็ก h5py

2
อินพุตและเอาต์พุตอาร์เรย์ numpy ไปยัง h5py
ฉันมีรหัส Python ที่เอาต์พุตเป็นเมทริกซ์ขนาดซึ่งรายการเป็นประเภทfloatทั้งหมด ถ้าฉันบันทึกด้วยนามสกุล.datไฟล์จะมีขนาด 500 MB ฉันอ่านพบว่าการใช้h5pyลดขนาดไฟล์ลงอย่างมาก ดังนั้นขอบอกว่าผมมีอาร์เรย์ numpy 2D Aชื่อ ฉันจะบันทึกเป็นไฟล์ h5py ได้อย่างไร นอกจากนี้ฉันจะอ่านไฟล์เดียวกันและวางเป็นอาร์เรย์จำนวนนับในรหัสอื่นได้อย่างไรเนื่องจากฉันต้องจัดการกับอาร์เรย์
101 python  arrays  numpy  h5py 

1
มีความเร็วในการวิเคราะห์หรือข้อได้เปรียบในการใช้หน่วยความจำในการใช้ HDF5 สำหรับการจัดเก็บอาร์เรย์ขนาดใหญ่ (แทนที่จะเป็นไฟล์ไบนารีแบบแบน) หรือไม่
ฉันกำลังประมวลผลอาร์เรย์ 3 มิติขนาดใหญ่ซึ่งฉันมักจะต้องแบ่งส่วนด้วยวิธีต่างๆเพื่อทำการวิเคราะห์ข้อมูลที่หลากหลาย "คิวบ์" ทั่วไปสามารถมีขนาด ~ 100GB (และมีแนวโน้มที่จะใหญ่ขึ้นในอนาคต) ดูเหมือนว่ารูปแบบไฟล์ที่แนะนำโดยทั่วไปสำหรับชุดข้อมูลขนาดใหญ่ใน python คือการใช้ HDF5 (h5py หรือ pytables) คำถามของฉันคือความเร็วหรือประโยชน์ในการใช้หน่วยความจำในการใช้ HDF5 เพื่อจัดเก็บและวิเคราะห์คิวบ์เหล่านี้ผ่านการจัดเก็บไว้ในไฟล์ไบนารีแบบแบนธรรมดาหรือไม่ HDF5 เหมาะสมกว่าสำหรับข้อมูลแบบตารางเมื่อเทียบกับอาร์เรย์ขนาดใหญ่เช่นที่ฉันกำลังทำงานอยู่หรือไม่ ฉันเห็นว่า HDF5 สามารถบีบอัดข้อมูลได้ดี แต่ฉันสนใจเรื่องความเร็วในการประมวลผลและจัดการกับหน่วยความจำล้นมากกว่า ฉันมักต้องการวิเคราะห์เพียงชุดย่อยขนาดใหญ่เพียงชุดเดียว ข้อเสียเปรียบอย่างหนึ่งของทั้ง pytables และ h5py คือเมื่อฉันใช้อาร์เรย์ส่วนหนึ่งฉันมักจะได้อาร์เรย์ที่เป็นตัวเลขกลับมาโดยใช้หน่วยความจำหมด อย่างไรก็ตามหากฉันหั่น memmap ที่เป็นตัวเลขของไฟล์ไบนารีแบบแบนฉันจะได้รับมุมมองซึ่งเก็บข้อมูลไว้ในดิสก์ ดังนั้นดูเหมือนว่าฉันสามารถวิเคราะห์ส่วนที่เฉพาะเจาะจงของข้อมูลได้ง่ายขึ้นโดยไม่ต้องใช้หน่วยความจำมากเกินไป ฉันได้สำรวจทั้ง pytables และ h5py แล้วและยังไม่เห็นประโยชน์จากจุดประสงค์ของฉัน
97 python  numpy  hdf5  pytables  h5py 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.