gpt4 book ai didi

python - 如何在我的机器上安装 numpy/core/numeric.py 文件;我想要 isclose()

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:38 26 4
gpt4 key购买 nike

我缺少一些基本的东西。

GitHub 上似乎有一些附加功能,特别是 isclose() here 我的安装不可用。

我做了以下事情:

$ git clone git://github.com/numpy/numpy.git numpy

但是好像没有用。

我还通过 Synaptic Package Manager 检查了更新,但这也没有成功。我错过了什么?我怎样才能获得“最新”版本?

我在 Ubuntu 12.10 上运行 python 2.7.3。

最佳答案

您链接到的代码是 Joe Kington 对 numpy 包的分支。

您发布的 git clone 命令将该分支的源代码下载到您的本地计算机。然后,您必须先编译并安装 numpy,然后才能使用此版本的 numpy。

获取isclose函数的最简单方法是简单地将代码复制到文件中并导入:

utils_num.py

import numpy as np
def isclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False):
"""
https://github.com/joferkington/numpy/blob/3a85c0a9af64b0296b9a4c97f43f2f209c849077/numpy/core/numeric.py
Returns a boolean array where two arrays are element-wise equal within a
tolerance.

The tolerance values are positive, typically very small numbers. The
relative difference (`rtol` * abs(`b`)) and the absolute difference
`atol` are added together to compare against the absolute difference
between `a` and `b`.

Parameters
----------
a, b : array_like
Input arrays to compare.
rtol : float
The relative tolerance parameter (see Notes).
atol : float
The absolute tolerance parameter (see Notes).
equal_nan : bool
Whether to compare NaN's as equal. If True, NaN's in `a` will be
considered equal to NaN's in `b` in the output array.

Returns
-------
y : array_like
Returns a boolean array of where `a` and `b` are equal within the
given tolerance. If both `a` and `b` are scalars, returns a single
boolean value.

See Also
--------
allclose

Notes
-----
For finite values, isclose uses the following equation to test whether
two floating point values are equivalent.
absolute(`a` - `b`) <= (`atol` + `rtol` * absolute(`b`))
The above equation is not symmetric in `a` and `b`, so that
`isclose(a, b)` might be different from `isclose(b, a)` in
some rare cases.

Examples
--------
>>> np.isclose([1e10,1e-7], [1.00001e10,1e-8])
array([True, False])
>>> np.isclose([1e10,1e-8], [1.00001e10,1e-9])
array([True, True])
>>> np.isclose([1e10,1e-8], [1.0001e10,1e-9])
array([False, True])
>>> np.isclose([1.0, np.nan], [1.0, np.nan])
array([True, False])
>>> np.isclose([1.0, np.nan], [1.0, np.nan], equal_nan=True)
array([True, True])
"""
def within_tol(x, y, atol, rtol):
result = np.less_equal(abs(x - y), atol + rtol * abs(y))
if np.isscalar(a) and np.isscalar(b):
result = result[0]
return result
x = np.array(a, copy=False, ndmin=1)
y = np.array(b, copy=False, ndmin=1)
xfin = np.isfinite(x)
yfin = np.isfinite(y)
if np.all(xfin) and np.all(yfin):
return within_tol(x, y, atol, rtol)
else:
# Avoid subtraction with infinite/nan values...
cond = np.zeros(broadcast(x, y).shape, dtype=bool)
mask = xfin & yfin
cond[mask] = within_tol(x[mask], y[mask], atol, rtol)
# Check for equality of infinite values...
cond[~mask] = (x[~mask] == y[~mask])
if equal_nan:
# Make NaN == NaN
cond[isnan(x) & isnan(y)] = True
return cond

测试.py:

import utils_num as UN
print(UN.isclose([1e10,1e-7], [1.00001e10,1e-8]))

产量

array([ True, False], dtype=bool)

关于python - 如何在我的机器上安装 numpy/core/numeric.py 文件;我想要 isclose(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15614678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com