【发布时间】:2015-07-17 15:34:46
【问题描述】:
我正在尝试将 Matlab 代码 sn-p 转换为 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)
它似乎有效,但我对此不太确定。有什么意见或建议吗?
【问题讨论】:
-
我很确定这些是不同的。
sprand(S)给出了与 S 具有相同稀疏结构的均匀分布的随机数。scipy.sparse.rand(a,b,density=density)的随机数具有密度的密度,相当于sprand(a,b,density)。 -
@cge 是的,我知道,所以这是我能做的最好的模仿 sprand() 的事情。所以我还在寻找更好的方法来实现
sprand(S)