Ошибка использования NumPy.fromiter () с результатами запроса MySQL - PullRequest
0 голосов
/ 17 августа 2011

У меня очень простой запрос, и я пытаюсь преобразовать его в массив NumPy с помощью функции fromiter (). Тем не менее, я не могу понять, почему это не работает, или что означает ошибка ниже. Есть идеи?

import numpy as np

c.execute("SELECT video_id FROM video")
results = c.fetchall()
D = np.fromiter(results, dtype=float, count=-1) 

ERROR: ValueError: setting an array element with a sequence.

Ответы [ 3 ]

2 голосов
/ 17 августа 2011

Как и раньше, results возвращает кортежи, поэтому вам придется извлечь значение из кортежа с помощью itertools.imap или вашего собственного итерируемого адаптера.

results = itertools.imap(lambda t: t[0], results)

Но я просто угадываю индекс, так как не знаю, что вы запрашиваете.

2 голосов
/ 17 августа 2011
import numpy as np
from itertools import chain

c.execute("SELECT video_id FROM video")
results = c.fetchall()
D = np.fromiter(chain.from_iterable(results), dtype=float, count=-1) 

Это должно извлечь значения из кортежей в результатах.

0 голосов
/ 17 августа 2011

Я не специалист по MySQL, но похоже, что результаты заканчиваются в виде списка, где каждый элемент представляет собой последовательность, например results = [(foo, bar), (baz, bid)], и эти элементы не являются допустимыми значениями массива.

Удостоверьтесь, что каждый элемент результатов на самом деле является float, а не, скажем, float в кортеже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...