0
sqlite3に格納されたデータからnumpy配列を作成しようとしていて、文字列に問題があります。私が理解していることから、fromiterはこの作業を達成する最も効率的な方法です。 cursor.fetchall()でデータを取得した後、文字列は正しいです。しかし、数が少ない配列に入った後、それは失われます。fromiterでnumpy配列を作成
import sqlite3
import numpy as np
connection = sqlite3.connect('fermControlData.db')
with connection:
cursor = connection.cursor()
sql = "SELECT Time, bTemp, aTemp, heaterStatus, gasMonitor, Location FROM dataLog WHERE beerName= 'Red Sled' ORDER BY Time"
cursor.execute(sql)
data = cursor.fetchall()
print(data[0], type(data[0][5]))
dataLog = np.fromiter(data, dtype=('f, f, f, i, i8, S'))
print(dataLog[0])
そして、あなたは文字列 'Warm1' が「B」に変換されたばかり見ることができるように、これは出力 -
(1480890498.4052606, 65.53, 66.42, 0, 0.0, 'Warm1') <class 'str'>
(1480890496.0, 65.52999877929688, 66.41999816894531, 0, 0, b'')
です。
あなたはそれがなぜ起こり、それを修正して文字列をインポートするのか知っていますか?
多くの感謝!
'fromiter 'を使用する場合、文字列の最大サイズを指定する必要があります。あなたは 'dtype =( 'f、f、f、i、i8、
'b '''は、Py3がバイト列をどのように表示するのか、 'S' dtypeです。ネイティブのUnicodeは 'U5'を試してください。 – hpaulj
ありがとう! U5がトリックをしました。 – Mike