Как инвертировать функцию numpy.where (np.where)

Я часто использую функцию numpy.where для сбора кортежа индексов матрицы, обладающей некоторым свойством. Например,

import numpy as np
X = np.random.rand(3,3)
>>> X
array([[ 0.51035326,  0.41536004,  0.37821622],
   [ 0.32285063,  0.29847402,  0.82969935],
   [ 0.74340225,  0.51553363,  0.22528989]])
>>> ix = np.where(X > 0.5)
>>> ix
(array([0, 1, 2, 2]), array([0, 2, 0, 1]))

ix теперь является кортежем объектов ndarray, содержащих индексы строки и столбца, тогда как подвыражение X> 0,5 содержит единственную логическую матрицу, указывающую, какие ячейки имели свойство> 0,5. Каждое представление имеет свои преимущества.

Как лучше всего взять объект ix и преобразовать его вернуться к логической форме позже, когда это потребуется? Например

G = np.zeros(X.shape,dtype=np.bool)
>>> G[ix] = True

Есть ли однострочный, который выполняет то же самое?

5
задан Fred Foo 5 September 2014 в 11:44
поделиться