Извлечь одно значение из базы данных sqlite3 - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть база данных с перехватами регрессионных моделей, коэффициентами.Я хотел бы извлечь коэффициенты и преобразовать их в массив Numpy.

cursor.execute("""SELECT * FROM model_coeffs WHERE desc = 'L1 penalty model'""")
cursor.fetchall()

Вывод показан ниже:

[(3, 'L1 penalty model', 'Intercept', '[0.]'),
 (3,
  'L1 penalty model',
  "['mean radius' 'mean texture' 'mean perimeter' 'mean area'\n 'mean smoothness' 'mean compactness' 'mean concavity'\n 'mean concave points' 'mean symmetry' 'mean fractal dimension'\n 'radius error' 'texture error' 'perimeter error' 'area error'\n 'smoothness error' 'compactness error' 'concavity error'\n 'concave points error' 'symmetry error' 'fractal dimension error'\n 'worst radius' 'worst texture' 'worst perimeter' 'worst area'\n 'worst smoothness' 'worst compactness' 'worst concavity'\n 'worst concave points' 'worst symmetry' 'worst fractal dimension']",
  '[[ 5.80829151e+00  1.47482359e-02 -4.59988460e-01 -9.43196068e-05\n   0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n   0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n   6.72375188e-01 -5.25653647e-02  0.00000000e+00  0.00000000e+00\n   0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n   0.00000000e+00 -2.04390704e-01 -1.03770307e-01 -2.79521678e-02\n   0.00000000e+00  0.00000000e+00 -2.37746363e+00  0.00000000e+00\n   0.00000000e+00  0.00000000e+00]]')]

В этом случае коэффициенты сохраняются в виде строки.Я хотел бы извлечь с помощью Sqlite и преобразовать их в массив, чтобы они выглядели так:

[[ 5.80829151e+00  1.47482359e-02 -4.59988460e-01 -9.43196068e-05
   0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00
   0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00
   6.72375188e-01 -5.25653647e-02  0.00000000e+00  0.00000000e+00
   0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00
   0.00000000e+00 -2.04390704e-01 -1.03770307e-01 -2.79521678e-02
   0.00000000e+00  0.00000000e+00 -2.37746363e+00  0.00000000e+00
   0.00000000e+00  0.00000000e+00]]

Я пытался использовать cursor.fetchone(), но это работает только для первой строки (т.е. извлечение значенияперехватывать).Каков sql / pythonic способ получить коэффициенты непосредственно из второй строки, содержащей коэффициенты?

1 Ответ

0 голосов
/ 27 ноября 2018

Если sql всегда будет возвращать 2 строки, то дважды выполните fetchone() (это отбрасывает первую строку).

Если sql вернет несколько наборов, выполните fetchall(), переберите результаты и отбросьте (игнорируйте) четные строки

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