2

numpy のブロードキャストが の出力にどのように影響するかを理解しようとしていますnp.allclose

>>> np.allclose([], [1.])
True

なぜそれが機能するのかわかりませんが、これは機能しません:

>>> np.allclose([], [1., 2.])
ValueError: operands could not be broadcast together with shapes (0,) (2,)

ここでのルールは何ですか?空の配列に関するnumpyドキュメントには何も見つかりません。

4

2 に答える 2

1

ブロードキャストはnp.allclose、他の機能に影響を与える以外には影響しません。

@cel によるコメントのように、[1.]次元 1 であるため、0 を含む他の任意の次元にブロードキャストできます。一方[1., 2.]、次元 2 であるため、ブロードキャストできません。

なぜallclose([],[1.]) == True?これは実際に理にかなっています。これは、 のすべての要素[]が に近いことを意味し1.ます。逆は、 には 要素がまったくないため、 に が近く[]にない要素が少なくとも 1 つあることを意味します。1.False[]

それについて考える別の方法は、実際にどのようにコーディングするかを自問することですallclose()

def allclose(array, target=1.):
    for x in array:
        if not isclose(x, target):
            return False
    return True

Trueで呼び出すと、これが返され[]ます。

于 2016-07-12T15:28:49.187 に答える