[英]The equivalence of Matlab sprand() in Python?
我正在嘗試將Matlab代碼片段翻譯成Python代碼片段。 但是,我不太確定如何正確實現sprand()
函數。
這是Matlab代碼使用sprand()
:
% n_z is an integer, n_dw is a matrix
n_p_z_dw = cell(n_z, 1); % n(d,w) * p(z|d,w)
for z = 1:n_z
n_p_z_dw{z} = sprand(n_dw);
這就是我在Python中實現上述邏輯的方法:
n_p_z_dw = [None]*n_z # n(d,w) * p(z|d,w)
density = np.count_nonzero(n_dw)/float(n_dw.size)
for i in range(0, n_z):
n_p_z_dw[i] = scipy.sparse.rand(n_d, n_w, density=density)
它似乎有效,但我對此並不十分肯定。 有任何意見或建議嗎?
對於稀疏數組A,以下應該是一種相對快速的方法:
import scipy.sparse as sparse
import numpy as np
sparse.coo_matrix((np.random.rand(A.nnz),A.nonzero()),shape=A.shape)
這將構造COO格式稀疏矩陣:它使用A.nonzero()
作為坐標,並使用A.nnz
(A中的非零條目數)來查找要生成的隨機數的數量。
不過,我想知道這是否對scipy.sparse.rand
函數有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.