Часто я использую функцию numpy.where для набора кортежей индексов матрицы, имеющей некоторое свойство. НапримерКак инвертировать функцию numpy.where (np.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 объектов, которые содержат строки и столбцы индексы, в то время как подвыражении Х> 0,5 содержит одну булеву матрицу, указывающую, какие клетки имели> 0,5 свойства. Каждое представление имеет свои преимущества.
Каков наилучший способ взять объект ix и преобразовать его обратно в булевскую форму позже, когда это необходимо? Например,
G = np.zeros(X.shape,dtype=np.bool)
>>> G[ix] = True
Есть ли один вкладыш, который выполняет одно и то же?