2014-01-11 3 views
0

У меня есть разреженную матрицу А и вектор-столбец а,подматрицы в SciPy

In[1]: A 
Out[1]: <256x256 sparse matrix of type '<type 'numpy.float64'>' 
with 512 stored elements (blocksize = 2x2) in Block Sparse Row format> 

In[2]: len(a) 
Out[2]: 70 

Я хотел бы, чтобы написать подматрицу. Код, который я написал для этого:

Sub = A.tolil()[a,:][:,a] 

Время, необходимое для решения проблемы, довольно длительное. Мне хотелось узнать, возможно ли изменить код, чтобы ускорить процесс.

ответ

0

csr матрицы имеют быструю резку строк; csc-матрицы имеют быструю сортировку столбцов. Конверсии между наиболее разреженными типами хорошо оптимизированы, поэтому я бы предложил попробовать использовать соответствующий тип для того, какой вид среза должен быть выполнен.

Sub = A.tocsr() [a,:]. Tocsc() [:, a]