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`
此功能的用例是什么?
答案 0 :(得分:1)
此功能的用例可能很少。之所以提供它,是因为每个python运算符都在numpy中作为ufunc公开:
+
:np.positive
-
:np.negative
+
:np.add
-
:np.subtract
正如documentation所述,并在另一个答案中指出,np.positive
复制数据,就像np.copy
那样,但有两个警告:
它可以更改输入的dtype
仅为算术类型定义。例如,如果尝试在布尔数组上调用它,则会得到
UFuncTypeError: ufunc 'positive' did not contain a loop with signature matching types dtype('bool') -> dtype('bool')
另一件事是,由于positive
是ufunc
,因此它可以就地工作,使其成为算术类型的有效无操作函数:
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)
的替代方案。它会创建一个重复数组供您使用。