Повторное использование данных в python

#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:

Еще несколько комментариев:

  1. Этот код

     for each in data:
        v= dict((each, []) for each in data)
    print v
      

    создает один и тот же словарь снова и снова. Вы можете просто удалить внешний цикл for и получите тот же результат.

  2. Часть

     d=[]
    for each in c:
        d.append(each)
      

    эквивалентно

     d = list(c)
      
  3. Весь ваш код может быть записан как

     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)