python数据分析numpy基础之fabs用法和示例

1 python数据分析numpy基础之fabs用法和示例

python的numpy库的fabs()函数用于计算多维数组的每个元素的绝对值,绝对值都为浮点数,并且不能计算复数的绝对值,速度会比abs()快。

用法

numpy.fabs(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj]) = <ufunc 'fabs'>

描述

numpy.fabs()对数组的每个元素(非复数)计算绝对值,并且绝对值为浮点数,返回ndarray数组或标量。

入参

x:必选,array-like

需计算绝对值的数字数组,可以是ndarray或类ndarray(比如元组、列表等)或标量,不能为复数;

out:可选,ndarray

存储绝对值结果的数组。若提供,则需为ndarray,out元素类型必须为浮点数,与返回值一致,若未提供,返回新的ndarray;

where:可选,bool

表示是取哪的结果作为出参,默认为True,表示abs绝对值运算结果作为出参;若为False,若传了out则结果取out的值,若未传out则结果取最近一次的out的值,最近一次out若为out=None则取随机值;

出参

返回x的浮点型绝对值,x是array-lie则返回ndarray,若为标量则返回标量。

1.1 入参x

np.fabs()的入参x为必选入参,表示需计算绝对值的ndarray或元组或列表或标量。可以是整数、浮点数,不能为复数。

>>> import numpy as np
>>> np.abs(-1)
1
# 标量,通过np.fabs()计算绝对值
>>> np.fabs(-1)
1.0
# 元组,通过np.fabs()计算绝对值
>>> np.fabs((-1,-2,-3))
array([1., 2., 3.])
# 列表,通过np.fabs()计算绝对值
>>> np.fabs([-1,-2,-3])
array([1., 2., 3.])
# ndarray,通过np.fabs()计算绝对值
>>> np.fabs(np.array((-4,-5,-6.2)))
array([4. , 5. , 6.2])
# 复数,不能通过np.fabs()计算绝对值
>>> np.fabs(-1-2j)
Traceback (most recent call last):
  File "", line 1, in <module>
    np.fabs(-1-2j)
TypeError: ufunc 'fabs' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
# 复数,通过np.abs()计算绝对值
>>> np.abs(-1-2j)
2.23606797749979

1.2 入参out

np.fabs()的入参out为可选入参,表示存放绝对值结果的ndarray,若提供,则需为ndarray,out元素类型必须为浮点数,与返回值一致,若未提供,返回新的ndarray;如果是标量用fabs(),则out的每个元素都赋值为标量的绝对值。

>>> import numpy as np
>>> list1=[-1,-2,-3]
>>> ar1=np.array([-4,-5,-6])
>>> ar2=np.zeros(3)
# np.fabs()的out(ar2)存放绝对值结果,若入参x为array-like,则out需为ndarray
>>> np.fabs(list1,out=ar2)
array([1., 2., 3.])
>>> ar2
array([1., 2., 3.])
>>> list1,ar2
([-1, -2, -3], array([1., 2., 3.]))
# np.fabs()的out(ar1)的dtype与返回值的dtype不一致,报错
>>> np.fabs(ar1,out=ar1)
Traceback (most recent call last):
  File "", line 1, in <module>
    np.fabs(ar1,ar1)
numpy.core._exceptions._UFuncOutputCastingError: Cannot cast ufunc 'fabs' output from dtype('float64') to dtype('int32') with casting rule 'same_kind'
>>> ar3=np.array([-4,-5,-6.2])
# np.fabs()的out的dtype与返回值的dtype一致,成功
>>> np.fabs(ar3,ar3)
array([4. , 5. , 6.2])
# np.fabs()的out未指定则返回新的ndarray
>>> np.fabs(ar1)
array([4., 5., 6.])
>>> a=1
# out 必须为ndarray
>>> np.fabs(-5,a)
Traceback (most recent call last):
  File "", line 1, in <module>
    np.fabs(-5,a)
TypeError: return arrays must be of ArrayType
>>> np.fabs(-5)
5.0
# out的每个元素都赋值为标量的绝对值
>>> np.fabs(-5,ar3)
array([5., 5., 5.])

1.3 入参where

np.fabs()的入参where为可选入参,表示是取哪的结果作为出参,默认为True表示取绝对值结果为出参,若为False却指定out则取out为出参,未指定out则取随机值。

>>> import numpy as np
>>> list1=[-1,-2,-3]
>>> ar1=np.array([-4,-5,-6.8])
# 未指定out,where=False取随机值
>>> np.fabs(list1,where=False)
array([8.18434960e-085, 2.64937394e+180, 9.57484969e+247])
# 未指定out,where=True取绝对值结果作为出参
>>> np.fabs(list1,where=True)
array([1., 2., 3.])
# 指定out,where=False取out作为出参
>>> np.fabs(list1,out=ar1,where=False)
array([-4. , -5. , -6.8])

你可能感兴趣的:(python,python,numpy)