plus/minus python 的运算符 ±
plus/minus operator for python ±
我正在寻找在 python 2 或 3 中执行 plus/minus 操作的方法。我不知道命令或运算符,也找不到执行此操作的命令或运算符.
我是不是漏掉了什么?
我想你想要这样的等式;
除非你不使用 SymPy,否则没有运算符,你唯一能做的就是创建一个 if
语句并找到每个乘数。
另一种可能:uncertainties是一个计算容错的模块,即
(2.1 +/- 0.05) + (0.6 +/- 0.05) # => (2.7 +/- 0.1)
可以写成
from uncertainties import ufloat
ufloat(2.1, 0.05) + ufloat(0.6, 0.05)
编辑: 我得到了一些奇怪的结果,经过更多的尝试我弄清楚了原因:指定的错误不是公差(硬加性限制,如工程蓝图)但标准偏差值 - 这就是为什么上面的计算结果
ufloat(2.7, 0.07071) # not 0.1 as I expected!
SymPy 中还没有这样的对象(如您所见,有一个问题提示 https://github.com/sympy/sympy/issues/5305)。不过,这并不难效仿。只需创建一个 Symbol,最后分别用 +1 和 -1 交换它。喜欢
pm = Symbol(u'±') # The u is not needed in Python 3. I used ± just for pretty printing purposes. It has no special meaning.
expr = 1 + pm*x # Or whatever
# Do some stuff
exprpos = expr.subs(pm, 1)
exprneg = expr.subs(pm, -1)
您也可以从一开始就跟踪两个方程式。
如果您碰巧使用的是 matplotlib,则可以像使用 Latex 一样打印数学表达式。对于 +/- 符号,您可以使用:
print( r"value $\pm$ error" )
其中 r 将字符串转换为原始格式,$ 符号围绕字符串中的数学方程式部分。这部分中的任何单词都将采用不同的字体,并且它们之间不会有空格,除非用正确的代码明确指出。这可以在 matplotlib documentation.
的相关页面上找到
抱歉,如果这太小众了,但我偶然发现了这个问题,试图找到这个答案。
而不是计算像
这样的表达式
s1 = sqrt((125 + 10 * sqrt(19)) / 366)
s2 = sqrt((125 - 10 * sqrt(19)) / 366)
你可以使用
import numpy as np
pm = np.array([+1, -1])
s1, s2 = sqrt((125 + pm * 10 * sqrt(19)) / 366)
如果您要打印 ± 符号,只需使用:
print(u"\u00B1")
而不是计算像
这样的表达式
s1 = sqrt((125.0 + 10.0*sqrt(19)) / 366.0)
s2 = sqrt((125.0 - 10.0*sqrt(19)) / 366.0)
你可以使用
r = 10.0*sqrt(19)
s1, s2 = (sqrt((125.0 + i) / 366.0) for i in (r, -r))
这是基于Nico's ,但使用生成器表达式而不是 NumPy
plus/minus 公差测试可以使用差值和绝对值与您希望测试的公差进行比较。类似于:
tst_data = Number you wish to test
norm = Target number
tolerance = Whatever the allowed tolerance is.
if abs(tst_data - norm) <= tolerance:
do stuff
使用 abs
函数允许测试 return +/- 在公差范围内,如 True
我正在寻找在 python 2 或 3 中执行 plus/minus 操作的方法。我不知道命令或运算符,也找不到执行此操作的命令或运算符.
我是不是漏掉了什么?
我想你想要这样的等式;
除非你不使用 SymPy,否则没有运算符,你唯一能做的就是创建一个 if
语句并找到每个乘数。
另一种可能:uncertainties是一个计算容错的模块,即
(2.1 +/- 0.05) + (0.6 +/- 0.05) # => (2.7 +/- 0.1)
可以写成
from uncertainties import ufloat
ufloat(2.1, 0.05) + ufloat(0.6, 0.05)
编辑: 我得到了一些奇怪的结果,经过更多的尝试我弄清楚了原因:指定的错误不是公差(硬加性限制,如工程蓝图)但标准偏差值 - 这就是为什么上面的计算结果
ufloat(2.7, 0.07071) # not 0.1 as I expected!
SymPy 中还没有这样的对象(如您所见,有一个问题提示 https://github.com/sympy/sympy/issues/5305)。不过,这并不难效仿。只需创建一个 Symbol,最后分别用 +1 和 -1 交换它。喜欢
pm = Symbol(u'±') # The u is not needed in Python 3. I used ± just for pretty printing purposes. It has no special meaning.
expr = 1 + pm*x # Or whatever
# Do some stuff
exprpos = expr.subs(pm, 1)
exprneg = expr.subs(pm, -1)
您也可以从一开始就跟踪两个方程式。
如果您碰巧使用的是 matplotlib,则可以像使用 Latex 一样打印数学表达式。对于 +/- 符号,您可以使用:
print( r"value $\pm$ error" )
其中 r 将字符串转换为原始格式,$ 符号围绕字符串中的数学方程式部分。这部分中的任何单词都将采用不同的字体,并且它们之间不会有空格,除非用正确的代码明确指出。这可以在 matplotlib documentation.
的相关页面上找到抱歉,如果这太小众了,但我偶然发现了这个问题,试图找到这个答案。
而不是计算像
这样的表达式s1 = sqrt((125 + 10 * sqrt(19)) / 366)
s2 = sqrt((125 - 10 * sqrt(19)) / 366)
你可以使用
import numpy as np
pm = np.array([+1, -1])
s1, s2 = sqrt((125 + pm * 10 * sqrt(19)) / 366)
如果您要打印 ± 符号,只需使用:
print(u"\u00B1")
而不是计算像
这样的表达式s1 = sqrt((125.0 + 10.0*sqrt(19)) / 366.0)
s2 = sqrt((125.0 - 10.0*sqrt(19)) / 366.0)
你可以使用
r = 10.0*sqrt(19)
s1, s2 = (sqrt((125.0 + i) / 366.0) for i in (r, -r))
这是基于Nico's
plus/minus 公差测试可以使用差值和绝对值与您希望测试的公差进行比较。类似于:
tst_data = Number you wish to test
norm = Target number
tolerance = Whatever the allowed tolerance is.
if abs(tst_data - norm) <= tolerance:
do stuff
使用 abs
函数允许测试 return +/- 在公差范围内,如 True