numpy.positive用例

时间:2019-03-29 14:26:14

标签: python numpy numpy-ufunc

positive(版本1.13+)中有一个numpy函数,该函数似乎什么也没做:

In [1]: import numpy as np                                                                               

In [2]: A = np.array([0, 1, -1, 1j, -1j, 1+1j, 1-1j, -1+1j, -1-1j, np.inf, -np.inf])                     

In [3]: A == np.positive(A)                                                                              
Out[3]: 
array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True])

文档说:Returned array or scalar: `y = +x`

此功能的用例是什么?

2 个答案:

答案 0 :(得分:1)

此功能的用例可能很少。之所以提供它,是因为每个python运算符都在numpy中作为ufunc公开:

  • 一元+np.positive
  • 一元-np.negative
  • 二进制+np.add
  • 二进制-np.subtract
  • 等...

正如documentation所述,并在另一个答案中指出,np.positive复制数据,就像np.copy那样,但有两个警告:

  1. 它可以更改输入的dtype

  2. 仅为算术类型定义。例如,如果尝试在布尔数组上调用它,则会得到

     UFuncTypeError: ufunc 'positive' did not contain a loop with signature matching types dtype('bool') -> dtype('bool')
    

另一件事是,由于positiveufunc,因此它可以就地工作,使其成为算术类型的有效无操作函数:

np.positive(x, out=x)

答案 1 :(得分:0)

如果向量为x,则np.positive(x)给您,+1*(x)np.negative(x)给您-1*(x)

np.positive([-1,0.7])

output: array([-1. ,  0.7])


np.negative([-1.5,0.7])

output:array([ 1.5, -0.7])


np.positive(np.array([0, 1, -1, 1j, -1j, 1+1j, 1-1j, -1+1j, -1-1j, np.inf, -np.inf]))

output: array([  0.+0.j,   1.+0.j,  -1.+0.j,   0.+1.j,  -0.-1.j,   1.+1.j,
         1.-1.j,  -1.+1.j,  -1.-1.j,  inf+0.j, -inf+0.j])


np.negative(np.array([0, 1, -1, 1j, -1j, 1+1j, 1-1j, -1+1j, -1-1j, np.inf, -np.inf]))

output: array([ -0.-0.j,  -1.-0.j,   1.-0.j,  -0.-1.j,   0.+1.j,  -1.-1.j,
        -1.+1.j,   1.-1.j,   1.+1.j, -inf-0.j,  inf-0.j])


用例取决于。一旦用例,它是x1 = copy(x)的替代方案。它会创建一个重复数组供您使用。