#python #numpy
#python #numpy
Вопрос:
Я пытаюсь один раз извлечь данные из Mysql в «c». Затем создайте массив NUMPY и dict из данных. Кажется, что как только я заархивирую ‘c’, он больше не останется в оригинальной форме. Можно ли это сделать?
import csv, pyodbc#,
from numpy import *
import numpy as np
csr = cxn.cursor()
c = csr.execute("Select * from p.s")
s = zip(*c)
data = s[0]
for each in data:
v= dict((each, []) for each in data)
print v
d=[]
for each in c:
d.append(each)
a = asarray(d)
print a
Ответ №1:
Еще несколько комментариев:
-
Этот код
for each in data: v= dict((each, []) for each in data) print v
создает один и тот же словарь снова и снова. Вы можете просто удалить внешний цикл for и получите тот же результат.
-
Часть
d=[] for each in c: d.append(each)
эквивалентно
d = list(c)
-
Весь ваш код может быть записан как
csr = cxn.cursor() c = csr.execute("Select * from p.s") a = numpy.fromiter(c) v = dict((key, []) for key in a[:,0])
Комментарии:
1. asarray(d) =>>> asarray(d, dtype=’object’), будет ли это работать с np.fromiter(c)?
Ответ №2:
zip(*c)
использует c
итератор, поэтому вам нужно воссоздать его позже путем повторного запуска c = csr.execute("Select * from p.s")
или сохранить его содержимое перед
zip
следующим образом c = list(c)