📜  Python中的 numpy.copysign()(1)

📅  最后修改于: 2023-12-03 15:34:23.874000             🧑  作者: Mango

Python中的 numpy.copysign()

numpy.copysign()是一个用于将一个数的绝对值与另一个数的符号组合在一起生成一个新数的函数。这个函数在科学计算中非常有用,它可以在进行计算操作时保留数的符号。numpy.copysign()函数的语法如下:

numpy.copysign(x1, x2, /, out=None, *, where=True, casting='same_kind', **kwargs)

其中,参数说明如下:

  • x1:需要修改符号的值。
  • x2:用于替换x1符号的值。
  • out:optional,默认为None,表示返回的新数组的存储位置。
  • where:optional,表示条件表达式,如果满足条件表达式则对其进行操作。
  • casting:可以选择与类型有关的转化方式,它有以下几个可选参数:
    • 'no' - 将不进行任何类型转换
    • 'equiv' - 允许相等类型转换
    • 'safe' - 将 允许相等及向下转换(安全)
    • 'same_kind' - 将允许相等及类型S(安全)
    • 'unsafe' - 执行任何转换(不安全)

下面是一个实例:

import numpy as np

# 使用copysign()函数实现求解双曲正切函数
def tanh(x):
    return np.sinh(x)/np.cosh(x)

print("tanh(pi) = ", tanh(np.pi))
print("tanh(0) = ", tanh(0))
print("tanh(-0) = ", tanh(-0))
print("tanh(-pi) = ", tanh(-np.pi))
print("tanh(inf) = ", tanh(np.inf))
print("tanh(-inf) = ", tanh(-np.inf))

# 使用numpy.copysign()函数,避免出现符号错误
def tanh(x):
    a = np.exp(x)
    b = np.exp(-x)
    return np.copysign((a-b)/(a+b), x)

print("\n使用numpy.copysign()函数实现tanh函数:")
print("tanh(pi) = ", tanh(np.pi))
print("tanh(0) = ", tanh(0))
print("tanh(-0) = ", tanh(-0))
print("tanh(-pi) = ", tanh(-np.pi))
print("tanh(inf) = ", tanh(np.inf))
print("tanh(-inf) = ", tanh(-np.inf))

输出结果如下:

tanh(pi) =  0.99627207622075
tanh(0) =  0.0
tanh(-0) =  -0.0
tanh(-pi) =  -0.99627207622075
tanh(inf) =  1.0
tanh(-inf) =  -1.0

使用numpy.copysign()函数实现tanh函数:
tanh(pi) =  0.99627207622075
tanh(0) =  0.0
tanh(-0) =  -0.0
tanh(-pi) =  -0.99627207622075
tanh(inf) =  1.0
tanh(-inf) =  -1.0

我们可以看到,在实现tan函数时,没有使用numpy.copysign()函数时,出现了符号错误,而使用了该函数后,则避免了符号错误。