2013-05-21 14 views
1

我的一個向量格式爲scipy.sparse.csr.csr_matrix,另一種是numpy.ndarray。我有一個實驗代碼如下:如何在Python中使用兩種不同格式的向量操作

import numpy as np 
from scipy.sparse import csr_matrix 

x = np.arange(5)+1 
y = [1, 0, 0, 1, 2] 
y = csr_matrix(y) 
print type(x) 
print type(y) 

z = np.true_divide(y,x) 
print z.shape 

我得到z.shape =(5L,),不知道這是什麼意思。如果我打印z,它告訴我它有一個包含3個元素的行向量。如何打印數字結果,例如來自z的1 * 5向量?我對Python和這些數學軟件包很陌生,只想瞭解一些關於稀疏矩陣操作的知識。我的問題是如何正確和有效地進行這樣的操作,因爲我猜想有一種方法不需要每次都將稀疏表示返回到密集狀態。

謝謝!

回答

1

你可以這樣做:

import numpy as np 
from scipy.sparse import csr_matrix 

x = np.arange(5)+1 

y = [1, 0, 0, 1, 2] 
y = csr_matrix(y) 

x2 = 1.0/np.matrix(x) 

z = y.multiply(x2) 

結果:

>>> z 
matrix([[ 1. , 0. , 0. , 0.25, 0.4 ]]) 
相關問題