2015-11-03 64 views
1

在生成TF-IDF模塊時,我剛剛面對這種矩陣向量計算。Python中的通用矩陣計算,TF-IDF

A % b = C 

[[1,2], [3,4]] % [1/2, 1/3] = [[1/2, 2/3], [3/2, 4/3]] 

這裏ADocument x Words一個矩陣,其中A_ij是字i的文件j一個期限,頻率計數。並且b矢量是針對每個詞預先計算的IDF值,例如如果在7個不同文檔中使用詞j,則b_j是1/7。

人們如何稱之爲列式乘法? 有沒有現有的庫支持這個操作? (Python)的

  • 由於大尺寸&稀疏的,我已經使用csr_matrixscipy保存矩陣。
  • 我試圖將它們更改爲np.array並執行A*b操作,但它在幾分鐘內未完成。

回答

2

爲此使用NumPy

它是逐元素乘法

import numpy as np 
A = np.array([[1, 2], [3, 4]]) 
b = np.array([1/2, 1/3]) 
print(A * b) 

輸出:

[[ 0.5   0.66666667] 
[ 1.5   1.33333333]] 

在csr_matrix的情況下:

from scipy.sparse import csr_matrix 
x1 = csr_matrix([[1, 2], [3, 4]]) 
x2 = csr_matrix([1/2, 1/3]) 
print(x1.multiply(x2).todense()) 

輸出:

[[ 0.5   0.66666667] 
[ 1.5   1.33333333]] 
+0

如果我一直使用A和B的scipy矩陣怎麼辦? – SUNDONG