np.infとfloat( 'Inf')の違い

アレトール:

NumPy np.infとの違いはありfloat('Inf')ますか?float('Inf') == np.infを返すTrueので、それらは交換可能であるように思われます。したがって、NumPyが独自の「inf」定数を定義した理由と、スタイルの懸念を考慮して、いつ1つの定数を他の定数の代わりに使用する必要があるのか​​疑問に思いましたか?

MSeifert:

TL、DR:違いはなく、同じように使用できます。

math.infandと同じ値を持つことに加えてfloat('inf')

>>> import math
>>> import numpy as np

>>> np.inf == float('inf')
True
>>> np.inf == math.inf
True

また、同じタイプです。

>>> import numpy as np
>>> type(np.inf)
float
>>> type(np.inf) is type(float('inf'))
float

NumPyにも独自の浮動小数点型があるため、これは興味深いです。

>>> np.float32(np.inf)
inf
>>> type(np.float32(np.inf))
numpy.float32
>>> np.float32('inf') == np.inf  # nevertheless equal
True

それは同じ値と同じ型を持つようにmath.infし、float('inf')それは交換可能です意味しています。

使用する理由 np.inf

  1. 入力する手間が省けます:

    • np.inf (6文字)
    • math.inf (8文字; Python 3.5の新機能)
    • float('inf') (12文字)

    つまり、すでにNumPyをインポートしている場合は、float('inf')(またはmath.infと比較して、発生ごとに6(または2)文字を節約できます

  2. 覚えやすいから。

    少なくとも私にとっては、文字列でnp.inf呼び出す必要があるよりも覚えやすいfloatです。

    また、NumPyは、無限大の追加のエイリアスもいくつか定義しています。

    np.Inf
    np.inf
    np.infty
    np.Infinity
    np.PINF
    

    また、負の無限大のエイリアスも定義します。

    np.NINF
    

    同様にnan

    np.nan
    np.NaN
    np.NAN
    
  3. 定数は定数です

    この点はCPythonに基づいており、別のPython実装では完全に異なる可能性があります。

    floatCPythonのインスタンスは、24バイトが必要です。

    >>> import sys
    >>> sys.getsizeof(np.inf)
    24
    

    同じインスタンスを再利用できる場合、新しいインスタンスを大量に作成する場合と比較して、多くのメモリを節約できる可能性があります。もちろん、この点は、独自のinf定数を作成する場合はミュートですが、作成しない場合:

    a = [np.inf for _ in range(1000000)]
    b = [float('inf') for _ in range(1000000)]
    

    bは、24 * 1000000バイト(約23 MB)より多くのメモリを使用しaます。

  4. 定数へのアクセスは、変数の作成よりも高速です。

    %timeit np.inf
    37.9 ns ± 0.692 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
    %timeit float('inf')
    232 ns ± 13.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
    
    %timeit [np.inf for _ in range(10000)]
    552 µs ± 15.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
    %timeit [float('inf') for _ in range(10000)]
    2.59 ms ± 78.7 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
    

    もちろん、その点に対抗するために独自の定数を作成できます。しかし、なぜNumPyがすでにそれを行っているのか気になります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

`np.nanargmin([np.nan、np.inf])= 0`の背後にあるロジック

分類Dev

gdbのinfとは

分類Dev

大きなnp.float128を正常に返すことができるのに、numpyで同じnp.float128を作成しようとすると、infが表示されるのはなぜですか?

分類Dev

numpyで `NaN`が` -np.inf`よりも「小さい」と見なされるのはなぜですか?

分類Dev

np.concatenateとnp.hstackの違い

分類Dev

np.nanとnp.NaNの違い

分類Dev

floatを「+ inf」、「-inf」、「nan」に初期化する別の方法

分類Dev

inf not convertible to a float

分類Dev

`A(A == -Inf)=-realmax;`の意味

分類Dev

np.infを使用したscipyでのクワッド統合の制限

分類Dev

なぜfloat( 'Inf')はfloat( 'Inf')がPythonでfalseを返すのですか?

分類Dev

np.float64とpythonfloatの精度の違い(64)

分類Dev

random.uniform(0、float( "inf"))が常にinfを返すのはなぜですか?

分類Dev

np.nanとisnull()の比較の違い

分類Dev

-nと-npのMpiexecの違いは?

分類Dev

np.functionとfunctionの違い

分類Dev

違いnp.whereとこの回避策?

分類Dev

np.matmulとPEP465の違い

分類Dev

少なくとも1つのnp.inf値があるPandasデータフレームの行を検索して返す

分類Dev

np.random.seed()とnp.random.RandomState()の違い

分類Dev

np.random.seed()とnp.random.RandomState()の違い

分類Dev

Numpy:np.repeatとnp.broadcast_toの違い

分類Dev

np.linspaceとnp.arangeの違いは何ですか?

分類Dev

「np.inf // 2」が無限ではなくNaNになるのはなぜですか?

分類Dev

META-INFがMETA-INFと呼ばれるのはなぜですか?

分類Dev

infと有限値を返すfloat除算の場合はどうなりますか?

分類Dev

JavaEEアプリケーションのapp-infフォルダーとweb-infフォルダーの違いは何ですか?

分類Dev

GitのURLの違い[email protected]:inf5750 / davidab / project_devidabとgit.uip.co:inf5750 / davidab / project_devidab

分類Dev

Pythonのfloat( 'inf')のポイントは何ですか?

Related 関連記事

  1. 1

    `np.nanargmin([np.nan、np.inf])= 0`の背後にあるロジック

  2. 2

    gdbのinfとは

  3. 3

    大きなnp.float128を正常に返すことができるのに、numpyで同じnp.float128を作成しようとすると、infが表示されるのはなぜですか?

  4. 4

    numpyで `NaN`が` -np.inf`よりも「小さい」と見なされるのはなぜですか?

  5. 5

    np.concatenateとnp.hstackの違い

  6. 6

    np.nanとnp.NaNの違い

  7. 7

    floatを「+ inf」、「-inf」、「nan」に初期化する別の方法

  8. 8

    inf not convertible to a float

  9. 9

    `A(A == -Inf)=-realmax;`の意味

  10. 10

    np.infを使用したscipyでのクワッド統合の制限

  11. 11

    なぜfloat( 'Inf')はfloat( 'Inf')がPythonでfalseを返すのですか?

  12. 12

    np.float64とpythonfloatの精度の違い(64)

  13. 13

    random.uniform(0、float( "inf"))が常にinfを返すのはなぜですか?

  14. 14

    np.nanとisnull()の比較の違い

  15. 15

    -nと-npのMpiexecの違いは?

  16. 16

    np.functionとfunctionの違い

  17. 17

    違いnp.whereとこの回避策?

  18. 18

    np.matmulとPEP465の違い

  19. 19

    少なくとも1つのnp.inf値があるPandasデータフレームの行を検索して返す

  20. 20

    np.random.seed()とnp.random.RandomState()の違い

  21. 21

    np.random.seed()とnp.random.RandomState()の違い

  22. 22

    Numpy:np.repeatとnp.broadcast_toの違い

  23. 23

    np.linspaceとnp.arangeの違いは何ですか?

  24. 24

    「np.inf // 2」が無限ではなくNaNになるのはなぜですか?

  25. 25

    META-INFがMETA-INFと呼ばれるのはなぜですか?

  26. 26

    infと有限値を返すfloat除算の場合はどうなりますか?

  27. 27

    JavaEEアプリケーションのapp-infフォルダーとweb-infフォルダーの違いは何ですか?

  28. 28

    GitのURLの違い[email protected]:inf5750 / davidab / project_devidabとgit.uip.co:inf5750 / davidab / project_devidab

  29. 29

    Pythonのfloat( 'inf')のポイントは何ですか?

ホットタグ

アーカイブ