2012-08-03 13 views
6

के रूप में पढ़ना मेरे पास एक कोड है जो कई पुनरावृत्तियों के माध्यम से जाता है। प्रत्येक पुनरावृत्ति में, कोड एक numpy आधारित सरणी उत्पन्न करता है। मैं numpy आधारित सरणी को मौजूदा बाइनरी .dat फ़ाइल में जोड़ता हूं।एक बाइनरी .dat फ़ाइल को सरणी

WholeData = numpy.concatenate((Location,Data),axis=0) 
# Location & Data are two numpy arrays 
DataBinary = open('DataBinary.dat','ab') 
WholeData.tofile(DataBinary) 
DataBinary.close() 

मैं एक सरणी में पूरे बाइनरी फ़ाइल को पढ़ने के लिए कोशिश कर रहा हूँ: मैं डेटा उत्पन्न करने के लिए निम्न कोड का उपयोग करें। मैं निम्नलिखित की समस्या आ रही हूँ:

NewData = numpy.array('f') 
File1 = open('DataBinary.dat','rb') 
NewData.fromstring(File1.read()) 
File1.close() 

त्रुटि की स्थिति::

  1. मैं निम्नलिखित कोड की कोशिश की

    Traceback (most recent call last): File "", line 1, in AttributeError: 'numpy.ndarray' object has no attribute 'fromstring'

  2. मैं एक सरणी आधारित सरणी का उपयोग और उसके बाद पढ़ने के लिए करने की कोशिश की सरणी में फ़ाइल करें।

    from array import array 
    File1 = open('DataBinary.dat','rb') 
    NewData.fromstring(File1.read()) 
    File1.close() 
    

हालांकि, NewData गलत है, जैसे कि, यह WholeData के रूप में ही नहीं है। मुझे लगता है कि डेटा को numpy.array के रूप में सहेजना और इसे array.array के रूप में पढ़ना अच्छा विकल्प नहीं हो सकता है।

किसी भी सुझाव की सराहना की जाएगी।

उत्तर

16

मुझे लगता है कि numpy.fromfile तुम यहाँ क्या चाहते है:

import numpy as np 
myarray = np.fromfile('BinaryData.dat',dtype=float) 

इसके अलावा डॉक्स के अनुसार कि ध्यान दें, इस के रूप में डाटा स्टोर करने का सबसे अच्छा तरीका "परिशुद्धता के बारे में जानकारी और endianness खो दिया है" नहीं है । दूसरे शब्दों में, आपको यह सुनिश्चित करने की ज़रूरत है कि डेटाटाइप को टाइप करने के लिए पास किया गया है जिसे आपने मूल रूप से फ़ाइल में लिखा था।

+0

यह ठीक काम करता है! मैं डेटा स्टोर करने के लिए बेहतर तरीकों को देखूंगा। बहुत बहुत धन्यवाद, mgilson। – Nazmul

+0

यह डेटा को फ्लोट के रूप में पढ़ने के लिए ठीक काम करता है। लेकिन अगर मैं डेटा टेबल पढ़ना चाहता हूं तो मुझे क्या करना चाहिए? मैं मूल डेटा फ्रेम आयाम रखना चाहता हूं। – hmi

0

सूची फ़ाइल से द्विआधारी पढ़ने के लिए:

list_int = [ord(i) for i in fd.read()] 
संबंधित मुद्दे