a = np.array([[0, 2, 0, 0], [0, 1, 3, 0], [0, 0, 10, 11], [0, 0, 1, 7]])
array([[ 0, 2, 0, 0],
[ 0, 1, 3, 0],
[ 0, 0, 10, 11],
[ 0, 0, 1, 7]])
В каждой строке 0
записей. Мне нужно присвоить значение каждой из этих нулевых записей, где значение рассчитывается следующим образом:
V = 0.1 * Si / Ni
where Si is the sum of row i
Ni is the number of zero entries in row i
Я могу довольно легко рассчитать Si и Ni:
S = np.sum(a, axis=1)
array([ 2, 4, 21, 8])
N = np.count_nonzero(a == 0, axis=1)
array([3, 2, 2, 2])
Теперь, V
рассчитывается как:
V = 0.1 * S/N
array([0.06666667, 0.2 , 1.05 , 0.4 ])
Но как мне назначить V [i] для нуля записи в i -ой строке? Итак, я ожидаю получить следующий массив a
:
array([[ 0.06666667, 2, 0.06666667, 0.06666667],
[ 0.2, 1, 3, 0.2],
[ 1.05, 1.05, 10, 11],
[ 0.4, 0.4, 1, 7]])
Мне нужна какая-то операция или назначение выборочного вещания?