2017-10-03 7 views
0

(x、y)データをsqlite3データベースに格納しました。ここで、 'BLOB'として表示されます。例えば。最初のBLOBは、私が使用して、この最初のBLOBを読み取るための5653.sqlite3 BLOB(x、y data)からnumpy配列へ?

の大きさを持っています

db = sqlite3.connect(sqlite_db) 
cur = db.cursor() 
cur.execute('SELECT spectrum FROM spectra WHERE rowid=1') 
sample_xy_blob = cur.fetchone()[0] 
print(sample_xy_blob) 
print(type(sample_xy_blob)) 

sample_xy_np = np.loadtxt(sample_xy_blob) 
print(sample_xy_np) 
print(type(sample_xy_np)) 
db.close() 

印刷出力は次のように見える:

>>> b'94.075\t.1\r\n95.057\t.4\r\n96.050\t2.8\r\n97.034\t3.8\r\n97.094\t.3\r\n97.143\t.1\r\n98.040\t.2\r\n98.066\t.4\r\n99.050\t6.0\r\n99.188\t.1\r\n100.053\t.2\r\n100.078\t.2\r\n101.065\t.6\r\n102.061\t.2\r\n103.049\t1.6\r\n103.143\t.1\r\n104.067\t.1\r\n104.106\t.2\r\n106.089\t.2\r\n109.0... 
<class 'bytes'> 
[ 57. 52. 46. ..., 10. 13. 10.] 
<class 'numpy.ndarray'> 

>>> print(sample_xy_np.shape) 
(5653,) 

どのように私は、2D(Xを得るのですか、y)このうちnumpy配列?

ありがとうございます。

答えて

0

問題は、文字列に変換して数値配列に変換する必要があるBLOBのデコードでした。これは次のようにして行うことができます。

spec_xy_np = np.fromstring(spec_xy_blob, sep = '\t') 
spec_xy_np = np.reshape(spec_xy_np, (-1, 2)) 

最初のコマンドは数値1D配列を生成します。セパレータオプションsep = '\ t'は、空行のためにエラーを避けるために重要です。 2行目は、エントリ数を必要とせずに、1D配列を2D(x、y)配列に変更します。

関連する問題