Уведомления

Группа в Telegram: @pythonsu

#1 Май 7, 2012 13:54:59

myxo
Зарегистрирован: 2012-05-07
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

[решено] Медленное перемножение матриц в numpy

Задача - считать матрицу из базы данных и выполнять с ней какие-то действия - перемножать, складывать и т.д. В базе данных (mysql) матрица записанна как
№столбца | №строки | значение
значения - числа от 0 до 10. Проблема в том, что после того как я считал матрицу, перемножение значительно замедляется.

#!/usr/bin/python
from numpy import *
import MySQLdb as mdb
import time
con = mdb.connect("localhost", "root", "rootpassword", "recomsysdb")
cur = con.cursor()
cur.execute("SELECT Rank FROM Rank_t WHERE UserId < 101 and MovieId < 101")
res = cur.fetchall()
res = where(res == mat(None), 0, res)
Y = matrix(res).reshape(100,100)
W = mat(random.rand(100, 10))
p = time.time()
z = Y*W
print "DB   - time = %s sec" %(time.time() - p)
Y = mat(random.rand(100,100))
p = time.time()
q = Y*W
print "rand - time = %s sec" %(time.time() - p)

Выводит такие числа:
DB - time = 0.0187430381775 sec
rand - time = 0.00047492980957 sec

т.е. разница аж на 2 порядка. Я уже даже не знаю куда копать.

Отредактировано myxo (Май 14, 2012 07:04:41)

Офлайн

#2 Май 14, 2012 07:04:00

myxo
Зарегистрирован: 2012-05-07
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

[решено] Медленное перемножение матриц в numpy

Ну кстати, проблему решил, дело было в приведении типов, нужно писать

Y = matrix(res, int).reshape(100,100)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version