Вы можете использовать методы absolute
и sign
от numpy.
import numpy as np
a = np.array([[-1, 0, 1, 0.5], [-0.2, 0.8, 1, -1], [0.4, 0.8, 1, -0.1], [-0.6, 0.4, -1, 1]])
b = np.sign(a)
c = np.absolute(a)
Таким образом, b равно:
array([[-1., 0., 1., 1.],
[-1., 1., 1., -1.],
[ 1., 1., 1., -1.],
[-1., 1., -1., 1.]])
, а c равно:
array([[1. , 0. , 1. , 0.5],
[0.2, 0.8, 1. , 1. ],
[0.4, 0.8, 1. , 0.1],
[0.6, 0.4, 1. , 1. ]])
Единственное отличие состоит в том, что знак для элемента 0 считается0, а не +1, как вы хотите.
Редактировать :
Как упоминалось в полезном комментарии, чтобы получить вывод для матрицы b, как вы ожидаете (со знаком 0, равным +1), вы можете сделать это:
b = -2 * np.signbit(a) + 1