Так что это немного глоток. Но вот что я хочу сделать:
b = np.array([7,8,2,3]) a = np.array([[1, 1, 0, 1], [0, 0, 1, 1], [0, 1, 1, 0]]) *** The Magic Happens *** array([[7, 8, 0, 3], [0, 0, 2, 3], [0, 8, 2, 0]])
Я не думаю, что есть более быстрый / аккуратный ответ на это. Писать для других, чтобы найти это полезным. Как упоминалось в комментариях @Mark, вы можете найти ненулевые элементы на a>0, и умножив их на b, вы получите b в a форму, повторяя строки и умножая по элементам:
a>0
b
a
output = (a > 0) * b
Другой способ будет:
a[a>0] = np.tile(b,(a.shape[0],1))[a>0]