Функция copysign
Функция copysign возвращает новый массив,
в котором каждый элемент первого массива получает знак
соответствующего элемента второго массива.
Первым параметром передаётся массив значений,
у которых меняется знак. Вторым параметром передаётся
массив значений, чей знак будет скопирован.
Функция работает поэлементно и поддерживает вещественные числа.
Синтаксис
np.copysign(x1, x2)
Пример
Давайте скопируем знак отрицательных чисел из одного массива в положительные числа другого массива:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
sign_arr = np.array([-1, -1, -1, -1, -1])
res = np.copysign(arr, sign_arr)
print(res)
Результат выполнения кода:
[-1 -2 -3 -4 -5]
Пример
Давайте скопируем знак из массива с чередующимися положительными и отрицательными числами:
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
sign_arr = np.array([-1, 1, -1, 1, -1])
res = np.copysign(arr, sign_arr)
print(res)
Результат выполнения кода:
[-10 20 -30 40 -50]
Пример
Давайте скопируем знак из массива вещественных чисел в массив целых чисел:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
sign_arr = np.array([-0.5, 0.7, -1.2, 0.3, -0.9])
res = np.copysign(arr, sign_arr)
print(res)
Результат выполнения кода:
[-1 2 -3 4 -5]
Пример
Давайте используем copysign для преобразования отрицательного нуля в положительный:
import numpy as np
arr = np.array([-0.0, 0.0, -0.0, 0.0])
sign_arr = np.array([1, -1, 1, -1])
res = np.copysign(arr, sign_arr)
print(res)
Результат выполнения кода:
[ 0. -0. 0. -0.]
Пример
Давайте применим copysign к многомерным массивам:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
sign_arr = np.array([[-1, 1, -1], [1, -1, 1]])
res = np.copysign(arr, sign_arr)
print(res)
Результат выполнения кода:
[[-1 2 -3]
[ 4 -5 6]]