Найти - Пользователи
Полная версия: [решено] Медленное перемножение матриц в numpy
Начало » Python для новичков » [решено] Медленное перемножение матриц в numpy
1
myxo
Задача - считать матрицу из базы данных и выполнять с ней какие-то действия - перемножать, складывать и т.д. В базе данных (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
Ну кстати, проблему решил, дело было в приведении типов, нужно писать

Y = matrix(res, int).reshape(100,100)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB