Как создать логический массив Numpy, используя необычную индексацию - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть следующий фиктивный массив:

>>> arr

[[0 0 1 0 0 1 0 1 1 1 0 0]
 [1 1 0 1 1 0 0 0 0 0 1 1]
 [1 1 0 1 0 1 0 0 0 0 1 0]
 [1 1 0 1 1 0 1 1 0 0 0 1]
 [0 1 0 1 0 1 1 1 0 0 0 1]
 [1 0 1 1 1 0 0 1 0 0 1 1]]

У меня также есть некоторые «мутации», которые я хотел бы включить в свой массив в следующих позициях (обратите внимание, что они генерируются случайным образом каждый раз, поэтому я я не могу просто установить их вручную):

row = [0 4 3] 
col = [11 10 7]

Я знаю, что могу настроить таргетинг на каждую пару (строку, столбец), используя необычное индексирование с помощью arr[row, col] = -3 (например, установить эти элементы в -3).

Однако, то, что я хочу сделать, это побитовое НЕ - что-то вроде этого:

arr[row, col] = ~arr

Я пытался использовать np.where (), но он не принимает arr[row, col] b / c не генерирует логический массив.

Есть предложения? Как я могу создать логический массив для использования в качестве условия where

( также да, я знаю, что могу сделать массив всех нулей в той же форме, что и arr, а затем установить эти позиции в 1 и используйте это как маску - я бы хотел что-нибудь чище, хотя бы )

Спасибо!

...