Я пытаюсь сделать numpy массивы из данных, хранящихся в sqlite3, и иметь проблему со строками. Из того, что я понимаю, fromiter является наиболее эффективным способом решения этой задачи. После получения данных с помощью cursor.fetchall() строка верна. Однако после входа в массив numpy он теряется.Создать массив numpy с fromiter
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])
И это output-
(1480890498.4052606, 65.53, 66.42, 0, 0.0, 'Warm1') <class 'str'>
(1480890496.0, 65.52999877929688, 66.41999816894531, 0, 0, b'')
Как вы можете видеть строку «Теплый1» становится преобразованный б»».
Знаете ли вы, почему это происходит и как его исправить, чтобы импортировать строку?
Большое спасибо!
при использовании 'fromiter', вы должны указать максимальный размер строк. вы могли бы попробовать 'dtype = ('f, f, f, i, i8,
'b ''' - это то, как Py3 отображает байты, 'S' dtype. Попробуйте 'U5' для родного юникода. – hpaulj
Спасибо! U5 сделал трюк. – Mike