Я ищу способ бинаризации numpy N-d массива на основе порога, используя только одно выражение. Поэтому у меня есть что-то вроде этого:
np.random.seed(0)
np.set_printoptions(precision=3)
a = np.random.rand(4, 4)
threshold, upper, lower = 0.5, 1, 0
a теперь:
array([[ 0.02 , 0.833, 0.778, 0.87 ],
[ 0.979, 0.799, 0.461, 0.781],
[ 0.118, 0.64 , 0.143, 0.945],
[ 0.522, 0.415, 0.265, 0.774]])
Теперь я могу запустить эти 2 выражения:
a[a>threshold] = upper
a[a<=threshold] = lower
и достигните того, что я хочу:
array([[ 0., 1., 1., 1.],
[ 1., 1., 0., 1.],
[ 0., 1., 0., 1.],
[ 1., 0., 0., 1.]])
Но есть ли способ сделать это только с одним выражением?