我有一个numpy的csr矩阵,我想得到它的意思,但它包含了很多零,因为我消除了所有在主对角线上的值,它只在上面的三角形值上面,现在我的csr矩阵当转换为数组看起来像这样:numpy csr矩阵“均值”函数是否在所有矩阵上均值?我如何删除某个值?
0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0.63646664 0.34827262
0.24316454 0.1362165 0.63646664 0.15762204 0.31692202 0.12114576
0.35917146
据我了解这个零点在那里,以便重要的是,企业社会责任矩阵工作,这样显示的东西:
(0,5) 0.5790418
(3,10) 0.578210
(5,20) 0.912370
(67,5) 0.1093109
我看到该csr矩阵有它自己的 mean function,但这是否意味着函数考虑到所有零,因此除以包含零的数组中元素的数量?因为我只需要非零值的意思。我的矩阵包含多个向量之间的相似性和更像是矩阵类似的东西的清单:
[[ 0. 0.63646664 0.48492084 0.42134077 0.14366401 0.10909745
0.06172853 0.08116201 0.19100626 0.14517247 0.23814955 0.1899649
0.20181049 0.25663533 0.21003358 0.10436352 0.2038447 1.
0.63646664 0.34827262 0.24316454 0.1362165 0.63646664 0.15762204
0.31692202 0.12114576 0.35917146]
[ 0. 0. 0.58644824 0.4977052 0.15953415 0.46110612
0.42580993 0.3236768 0.48874263 0.44671607 0.59153001 0.57868948
0.27357541 0.51645488 0.43317846 0.50985032 0.37317457 0.63646664
1. 0.51529235 0.56963948 0.51218525 1. 0.38345582
0.55396192 0.32287605 0.46700191]
[ 0. 0. 0. 0.6089113 0.53873289 0.3367261
0.29264493 0.13232082 0.43288206 0.80079927 0.37842518 0.33658945
0.61990095 0.54372307 0.49982101 0.23555037 0.39283379 0.48492084
0.58644824 0.64524906 0.31279271 0.39476181 0.58644824 0.39028705
0.43856802 0.32296735 0.5541861 ]]
所以,我怎么能取均值仅在非零值?
我的另一个问题是如何删除所有等于某事的值,正如我上面指出的,我可能必须将某个值变为零?但我该怎么做?例如,我想摆脱所有等于1.0或更大的值? 这里是我的,直到这点使我的矩阵代码:
vectorized_words = parse.csr_matrix(vectorize_words(nostopwords,glove_dict))
#calculating the distance/similarity between each vector in the matrix
cos_similiarity = cosine_similarity(vectorized_words, dense_output=False)
# since there are duplicates like (5,0) and (0,5) which we should remove, I use scipy's triu function
coo_cossim = cos_similiarity.tocoo()
vector_similarities = sparse.triu(coo_cossim, k = 1).tocsr()
您是否使用'scipy.sparse'中的'csr_matrix'? – James
@詹姆斯是的我做 – nitheism
我认为'mean'不太可能忽略零。为什么不只是'sum(arr,axis = ...)/ sum(arr!= 0,axis = ...)'? – Eric