3

基本的なものが欠けています。

ここのGitHubには、インストールでは利用できない追加機能、具体的にはisclose()があるようです。

私は次のことをしました:

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

しかし、それはうまくいかなかったようです。

Synaptic Package Managerを使用して更新を確認しましたが、それでもうまくいきませんでした。私は何が欠けていますか?「最新」バージョンを入手するにはどうすればよいですか?

Ubuntu12.10でpython2.7.3を実行しています。

4

2 に答える 2

4

リンクしたコードは、ジョーキントンの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

test.py:

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

収量

array([ True, False], dtype=bool)
于 2013-03-25T13:02:23.113 に答える
1

そのバージョンのnumpyをインストールするには、クローンを作成cdしたディレクトリ/リポジトリにインストールする必要がありますnumpy/

実行します

python setup.py install

それはトリックをする必要があります

于 2013-03-25T13:37:15.600 に答える