有很多方法可以在Python中使用正值和负值。但是有时候我们只需要确保我们的价值没有负号即可。让我们看看绝对值如何提供帮助。
在这篇文章中:
在Python中获取绝对值的两种方法
使用Python的abs()函数获取绝对值
获取Python中整数的绝对值
获取Python中浮点值的绝对值
使用Python的math.fabs()函数获取绝对浮点值
示例:获取绝对值作为浮点值
从Python列表或数组获取绝对值
在Python列表中获取数字的绝对值
使用Python循环从列表中获取绝对值
从Python数组获取绝对值
从NumPy数组获取绝对值
概要
#在Python中获取绝对值的两种方法
在数学中,绝对值是数字的非负值,而不考虑其符号(Wikipedia,2019)。即,绝对值是描述数字与零的距离的值。
例如,的绝对值-12是12。并且的绝对值33是33。当我们不在乎符号时,我们的程序使用绝对值,而只需要该值。
Python有两种获取数字绝对值的方法:
内置abs()函数返回绝对值。
该math.fabs()函数还返回绝对值,但作为浮点值。
标准abs()功能是您95%的时间需要的功能。因此,让我们从那个开始。
#使用Pythonabs()函数获取绝对值
内置abs()函数返回绝对值(Lutz,2013年)。要执行此功能,该函数需要一个参数,该参数必须是一个数字(Python Docs,编号a)。然后,它返回该参数的绝对值。
要使用该函数,只需abs()在需要绝对值时调用:
abs(-23.43)
# Returns: 23.43
该abs()函数返回不同类型的值(Python Docs等):
当我们给出abs()整数或浮点值时,我们得到绝对的整数或浮点值作为回报。
但是,如果我们给出abs()一个复数,则该函数将返回该数字的大小。
#获取Python中整数的绝对值
因此,要获得整数的绝对值,我们只需将整数传递给abs()函数。这是一个例子:
# Some random integers
variableA = 28
variableB = -101
variableC = 0
variableD = -9116439
# Get the absolute values of those integers
absA = abs(variableA)
absB = abs(variableB)
absC = abs(variableC)
absD = abs(variableD)
# Output the results
print("Absolute values of integers with `abs()`:")
print("|", variableA, "| = ", absA, sep="")
print("|", variableB, "| = ", absB, sep="")
print("|", variableC, "| = ", absC, sep="")
print("|", variableD, "| = ", absD, sep="")
这个小程序首先生成四个整数变量(variableA到variableB)。有一个正值,两个负数和零。现在我们要获得它们的绝对价值。
因此,abs()接下来我们在每个变量上调用该函数。这为我们提供了一个值,该值指示特定数字与零的距离。我们把这些价值观在四个新的变量,absA通过absD。
然后,我们使用Python的print()函数输出原始数字及其绝对值。这是该输出的外观:
Absolute values of integers with `abs()`:
|28| = 28
|-101| = 101
|0| = 0
|-9116439| = 9116439
#获取Python中浮点值的绝对值
当然,我们也可以得到具有分数的数字的绝对值。为此,我们只需要调用abs()该值即可。这是一个简单的例子:
# Some random floating-point values
variableA = -12.34
variableB = -1.8457425364
variableC = -0.00000000001
variableD = 9424.5895279095
# Get the absolute value of each variable
absVarA = abs(variableA)
absVarB = abs(variableB)
absVarC = abs(variableC)
absVarD = abs(variableD)
# Output the results
print("Absolute values of floating point values with `abs()`:")
print("|", variableA, "| = ", absVarA, sep="")
print("|", variableB, "| = ", absVarB, sep="")
print("|", variableC, "| = ", absVarC, sep="")
print("|", variableD, "| = ", absVarD, sep="")
这个小程序产生四个浮点变量。我们称他们variableA通过variableD。
然后我们得到它们的绝对值。为此,我们abs()在每个变量上调用该函数。我们将函数的结果存储在一个新变量中(absVarA直到absVarD)。
接下来,我们用几个print()语句显示结果。每个输出原始变量及其绝对值:
|-12.34| = 12.34
|-1.8457425364| = 1.8457425364
|-1e-11| = 1e-11
|9424.5895279095| = 9424.5895279095
#使用Pythonmath.fabs()函数获取绝对浮点值
除标准abs()功能外,Python还具有该math.fabs()功能。此函数还需要一个参数。然后,它将该参数的绝对值作为浮点值返回(Python Docs,nd b)。
该行为类似于abs(),但是这里的主要区别在于:即使我们给出math.fabs()一个以整数开头的值,我们也总是返回浮点值。
要使用math.fabs(),我们只需做:
import math
math.fabs(-8)
# Returns: 8.0
#示例:获取绝对值作为浮点值
因此,为了获得绝对值作为浮点值,我们调用math.fabs()一个数值。这是一个例子:
import math
# Some random values
valueA = -4
valueB = -56
valueC = 26
valueD = -2.992474203
# Get the floating-point absolute value from each
fabs_A = math.fabs(valueA)
fabs_B = math.fabs(valueB)
fabs_C = math.fabs(valueC)
fabs_D = math.fabs(valueD)
# Output the results
print("Absolute floating-point values with `fabs()`:")
print("|", valueA, "| = ", fabs_A, sep="")
print("|", valueB, "| = ", fabs_B, sep="")
print("|", valueC, "| = ", fabs_C, sep="")
print("|", valueD, "| = ", fabs_D, sep="")
这个小程序首先导入math模块。然后,我们valueA通过声明四个变量valueB。它们的值包括正数和负数。
为了获得它们的绝对值,我们math.fabs()在每个变量上执行该函数。这使我们获得了带有小数部分的绝对值。我们将这些结果存储在fabs_A直通fabs_D变量中。
最后一部分具有print()显示原始值和绝对值的功能。从输出中可以看到,每个值都作为浮点值返回:
Absolute floating-point values with `fabs()`:
|-4| = 4.0
|-56| = 56.0
|26| = 26.0
|-2.992474203| = 2.992474203
#从Python列表或数组中获取绝对值
在上面的示例中,我们拥有abs()并math.fabs()返回单个值的绝对值。但是,如果我们有一系列值呢?让我们来看看。
#获取Python列表中数字的绝对值
Python有几种获取每个列表值的绝对值的方法。一种选择是列表理解表达式。这就提供了一种干净有效的方法,可以将完整列表转换为绝对值。
这是一个例子:
# Some random numbers
values = [-40, 58, -69, -84, 51, 76, -12, 36]
# Get the absolute value for each number
absValues = [abs(number) for number in values]
# Output data
print("Original numbers:\n", values)
print("Absolute values:\n", absValues)
在这个小程序中,我们首先创建一个名为的列表values。其值为正整数和负整数。
然后,我们对列表理解进行编码。该函数在其方括号([和])之间abs()获取每个number值的绝对值。该number变量来自我们的values列表。我们使用内联for表达式生成它for number in values。这将生成一个具有每个原始列表值绝对值的新列表。
然后,该print()函数将同时输出原始列表和具有绝对值的列表。这是该输出的外观:
Original numbers:
[-40, 58, -69, -84, 51, 76, -12, 36]
Absolute values:
[40, 58, 69, 84, 51, 76, 12, 36]
顺便说一句,如果您不需要保留原始列表值,只需将原始列表设置为列表理解的结果即可。例如:
# Some example values
values = [-40, 58, -69, -84, 51, 76, -12, 36]
# Replace the original numbers with the absolute values
values = [abs(number) for number in values]
#使用Python循环从列表中获取绝对值
虽然列表理解很有用,但并不是我们可以在每种情况下使用的东西。特别是如果除了简单获取绝对值之外,我们还想处理值,则常规for循环通常是更好的选择。
假设我们要获取列表中负值的绝对值,但将正值乘以2。这是我们如何使用Python循环进行编程的方法:
# Some positive and negative values
values = [-40, 58, -69, -84, 51, 76, -12, 36]
# Take the absolute value of negative values, but
# multiply positive values with 2
processed = []
for number in values:
if number < 0:
processed.append(abs(number))
else:
processed.append(number * 2)
# Output data
print("Original numbers:\n", values)
print("Processed numbers:\n", processed)
在这里,我们首先列出一个带有数字的列表。该values列表包含正整数和负整数。
然后,我们列出一个新列表processed。该列表最初是空的(但在循环内部被填充)。然后我们做一个for循环。此循环遍历values列表。循环number变量表示每个循环周期中的列表值。
在循环中,if / else语句将评估该变量。当它小于零时,该abs()函数采用其绝对值。然后,我们使用列表的append()方法将值添加到processed列表中。
当循环变量为零或更大时,该else子句将执行。在那里,我们将变量乘以2并将其添加到列表中。
代码的最后一部分具有Pythonprint()函数输出原始列表和已处理列表的功能。输出的内容如下:
Original numbers:
[-40, 58, -69, -84, 51, 76, -12, 36]
Processed numbers:
[40, 116, 69, 84, 102, 152, 12, 72]
如果不需要原始列表值,也可以使用for循环覆盖列表。一个方便的功能就是Python的enumerate()功能。看起来是这样的:
# Some positive and negative values
values = [-40, 58, -69, -84, 51, 76, -12, 36]
# Loop through the list and replace
# each number with its absolute value
for index, value in enumerate(values):
values[index] = abs(value)
#从Python数组获取绝对值
如果您的正值和负值在Python数组中,则获取它们的绝对值类似于使用列表。这是一个例子:
import array
# Create an array with random values
values = array.array('i', [-40, 58, -69, -84, 51, 76, -12, 36])
# Make a new array with the absolute values
absValues = array.array('i', [abs(value) for value in values])
# Output the results
print("Original array values:\n", values)
print("Absolute values:\n", absValues)
首先,我们导入array模块。然后,我们使用array.array()构造函数创建一个数组。该数组同时具有正整数和负整数。
然后,根据第一个数组的绝对值构建第二个数组。为了做到这一点,我们使用列表理解来构造数组。该表达式abs(value)从嵌入式for表达式生成的每个数字中获取绝对值(for value in values)。这样,我们遍历了原始列表,并在此过程中收集了绝对值。
代码的最后一位具有print()函数输出原始和绝对值数组的功能。看起来是这样的:
Original array values:
array('i', [-40, 58, -69, -84, 51, 76, -12, 36])
Absolute values:
array('i', [40, 58, 69, 84, 51, 76, 12, 36])
如果不需要原始数据,则最好用其绝对值覆盖该数组。例如:
values = array.array('i', [-40, 58, -69, -84, 51, 76, -12, 36])
# Overwrite existing array with absolute values
values = array.array('i', [abs(value) for value in values])
#从NumPy数组中获取绝对值
如果您使用适用于Python的NumPy数字编程包,则可能会有一个NumPy数组,您需要该数组中的绝对值。我们的操作方法如下:
import numpy
values = numpy.array([-40, 58, -69, -84, 51, 76, -12, 36])
# Make a new, absolute value array
absValues = numpy.abs(values)
print("Original NumPy array values:\n", values)
print("Absolute values:\n", absValues)
此代码首先导入numpy模块。然后,我们创建一个values使用正整数和负整数命名的数组。
为了获得它们的绝对值,我们调用numpy.abs()函数并将该数组作为参数传递。结果,NumPy返回一个新数组,其中包含原始数组中每个数字的绝对值。我们命名该数组absValues。
最后的print()语句显示两个数组。从输出中可以看出,numpy.abs()我们获得了每个原始数组值的绝对值:
Original NumPy array values:
[-40 58 -69 -84 51 76 -12 36]
Absolute values:
[40 58 69 84 51 76 12 36]
如果不需要保留原始数据,则可以用绝对值覆盖现有数组。这是如何做:
values = numpy.array([-40, 58, -69, -84, 51, 76, -12, 36])
# Overwrite array to get absolute values only
values = numpy.abs(values)
总结
Python的abs()函数返回整数和浮点数的绝对值。要使用它,我们调用函数并为其提供我们想要绝对值的参数。
为了获得列表或数组的绝对值,我们必须调用abs()每个元素。我们可以通过列表理解或for循环来做到这一点。
math.fabs()Python中还有一个函数。该值还返回绝对值,但始终为浮点值。