用fromiter创建numpy数组

时间:2017-01-05 21:32:09

标签: python numpy sqlite

我正在尝试从存储在sqlite3中的数据制作numpy数组,并且遇到字符串问题。据我所知,fromiter是完成这项任务的最有效方法。使用cursor.fetchall()获取数据后,字符串是正确的。然而,在进入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])

这是输出 -

(1480890498.4052606, 65.53, 66.42, 0, 0.0, 'Warm1') <class 'str'>
(1480890496.0, 65.52999877929688, 66.41999816894531, 0, 0, b'')

正如您所见,字符串'Warm1'正在转换为b''。

你知道为什么会发生这种情况以及如何修复它以便导入字符串吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

numpy数组中的字符串是固定长度的,在fromiter的情况下,您必须提前指定该长度。例如。与dtype=('f, f, f, i, i8, S5')