Я пытаюсь перевести фрагмент кода Matlab в Python. Однако я не очень уверен, как правильно реализовать функцию sprand()
.Эквивалентность Matlab sprand() в Python?
Это как использование кода 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, плотность = плотность) 'имеет случайные числа, имеющие плотность плотности, эквивалентную' sprand (а, б, плотность) '. – cge
@cge Да, я знаю это, так что это лучшее, что я могу сделать, чтобы имитировать sprand(). Поэтому я все еще ищу лучший способ реализовать 'sprand (S)' –