Заполнение массива numpy массивами numpy объектов с использованием логической маски - PullRequest
1 голос
/ 16 апреля 2020

У меня есть массив 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)

Есть ли более прямой способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...