У меня есть массив numpy таких объектов:
a = np.array([[None, None],
[None, None]], dtype=object)
и маска:
mask = np.array([[True , False],
[False, True ]], dtype=object)
Я хочу заменить значения a
, проиндексированные на mask
с таким массивом:
element = np.array([1, 2, 3])
Итак, я могу получить:
a = np.array([[np.array([1, 2, 3]), None ],
[None , np.array([1, 2, 3])]], dtype=object)
Я пробовал это
a[mask].fill(element)
a[mask] = element
np.putmask(a, mask, element)
, но элемент всегда рассматривается как массив, а не случайный объект.
На самом деле, я нашел способ заставить его работать, но не очень эффективно (мне нужно делать это много раз с большим массивом):
full = np.empty_like(a, dtype=object)
f.fill(element)
np.putmask(a, mask, full)
Есть ли более прямой способ сделать это?