我正在尝试使用sqlite3来计算numpy.array的平均值,我想利用sum函数。
到目前为止,我已经利用了这篇文章: stackoverflow numpy.array 这有助于我轻松存储和检索我需要的数组。
import sqlite3
import numpy
import io
def adapt_array(arr):
out = io.BytesIO()
numpy.save(out, arr)
out.seek(0)
a = out.read()
return buffer(a)
def convert_array(text):
out = io.BytesIO(text)
out.seek(0)
return numpy.load(out)
sqlite3.register_adapter(numpy.ndarray, adapt_array)
sqlite3.register_converter("array", convert_array)
x1 = numpy.arange(12)
x2 = numpy.arange(12, 24)
con = sqlite3.connect(":memory:", detect_types = sqlite3.PARSE_DECLTYPES)
cur = con.cursor()
cur.execute("create table test (idx int, arr array)")
cur.execute("insert into test (idx, arr) values (?, ?)", (1, x1))
cur.execute("insert into test (idx, arr) values (?, ?)", (2, x2))
cur.execute("select idx, sum(arr) from test")
data = cur.fetchall()
print data
但不幸的是,请求输出没有给出数组的总和。
[2, (0.0))
我想更进一步,直接从sql请求获得我想要的结果。感谢。
编辑:在阅读stackoverflow : manipulation of nyumpy.array witl sqlite3之后,我对这种可行性更加怀疑。任何能够得到接近我想要的结果的方法都将不胜感激。
Edit2:换句话说,我想要做的是将sum函数重新定义为我正在使用的特定类型的数据。它可行吗?这是压缩/解压缩numpy.array所做的工作。