मैं जो एक विमान की स्थिति का रिकॉर्ड होता है एक बाइनरी फ़ाइल है। जैसे प्रत्येक रिकॉर्ड देखो:Numpy fromfile का उपयोग कर एक बाइनरी फ़ाइल पढ़ें और किसी दिए गए ऑफसेट
0x00: Time, float32
0x04: X, float32 // X axis position
0x08: Y, float32 // Y axis position
0x0C: Elevation, float32
0x10: float32*4 = Quaternion (x,y,z axis and w scalar)
0x20: Distance, float32 (unused)
तो प्रत्येक रिकॉर्ड 32 बाइट्स लंबा है।
मैं एक Numpy सरणी प्राप्त करना चाहते हैं।
पर ऑफसेट 1859 है एक अहस्ताक्षरित पूर्णांक 32 (4 बाइट्स) जो सरणी के तत्वों की संख्या को इंगित करता है। मेरे मामले में 1201 9।
मैं (अब के लिए) परवाह नहीं है हैडर डेटा (ऑफसेट 1859)
सरणी केवल में शुरू 1863 (= 1859 + 4) ऑफसेट।
मैं की तरह
dtype = np.dtype([
("time", np.float32),
("PosX", np.float32),
("PosY", np.float32),
("Alt", np.float32),
("Qx", np.float32),
("Qy", np.float32),
("Qz", np.float32),
("Qw", np.float32),
("dist", np.float32),
])
मेरे अपने Numpy dtype परिभाषित और मैं फ़ाइल fromfile
का उपयोग कर पढ़ रहा हूँ:
a_bytes = np.fromfile(filename, dtype=dtype)
लेकिन मैं नहीं दिख रहा है किसी भी पैरामीटर fromfile
को प्रदान करने के लिए ऑफसेट पारित करने के लिए।
धन्यवाद:
यह एक समाधान है कि मेरे लिए काम किया है। यह मेरी समस्या हल हो गया। मैं भी 'डेटा = np.memmap (फ़ाइल नाम, dtype = dtype, मोड = 'आर', ऑफसेट = offset_array, आकार = एन)' ' – scls
सही पर है, अगर इसकी एक बड़ी फ़ाइल तो memmap के लिए रास्ता हो सकता है देखा चले जाओ। – reptilicus