native int型とnumpy.int32またはnumpy.int64型の主な相違点(存在する場合)は何ですか?native int型とnumpy.int型の違いは何ですか?
答えて
違いを見る別の方法は、2種類のオブジェクトにどのような方法があるかを尋ねることです。
私は方法を見て、完全なタブを使用することができますIpythonで:
In [1277]: x=123; y=np.int32(123)
int
メソッドと属性:
In [1278]: x.<tab>
x.bit_length x.denominator x.imag x.numerator x.to_bytes
x.conjugate x.from_bytes x.real
int
「事業者の
In [1278]: x.__<tab>
x.__abs__ x.__init__ x.__rlshift__
x.__add__ x.__int__ x.__rmod__
x.__and__ x.__invert__ x.__rmul__
x.__bool__ x.__le__ x.__ror__
...
x.__gt__ x.__reduce_ex__ x.__xor__
x.__hash__ x.__repr__
x.__index__ x.__rfloordiv__
np.int32
メソッドと属性を(またはプロパティ)。同じのいくつかが、より多くの、基本的にすべてのndarray
もの:
In [1278]: y.<tab>
y.T y.denominator y.ndim y.size
y.all y.diagonal y.newbyteorder y.sort
y.any y.dtype y.nonzero y.squeeze
...
y.cumsum y.min y.setflags
y.data y.nbytes y.shape
y.__
方法はint
もののような多くのことを見て。彼らは同じ数学をすることができます。
In [1278]: y.__<tab>
y.__abs__ y.__getitem__ y.__reduce_ex__
y.__add__ y.__gt__ y.__repr__
...
y.__format__ y.__rand__ y.__subclasshook__
y.__ge__ y.__rdivmod__ y.__truediv__
y.__getattribute__ y.__reduce__ y.__xor__
y
は多くの点で0dアレイと同じです。同一ではないが近い。
In [1281]: z=np.array(123,dtype=np.int32)
np.int32
は私が得るものであるとき、I指数その型の配列:
In [1300]: A=np.array([0,123,3])
In [1301]: A[1]
Out[1301]: 123
In [1302]: type(A[1])
Out[1302]: numpy.int32
私はnumpy
ラッピングのすべてを削除するためにitem
を使用する必要があります。 numpy
ユーザ、np.int32
がnumpy
ラッパーとint
されているよう
In [1303]: type(A[1].item())
Out[1303]: int
。逆に、ndarray
の1つの要素。通常、私はA[0]
が私に 'ネイティブ' int
かnumpyの同等物を与えているかどうかについては注意を払っていません。新しいユーザーとは対照的に、私はめったにnp.int32(123)
を使用しません。代わりにnp.array(123)
を使用します。
A = np.array([1,123,0], np.int32)
は、3 np.int32
オブジェクトを含まない。むしろそのデータバッファは3 * 4 = 12バイト長です。それは1dの3つの整数として解釈する配列オーバーヘッドです。そしてview
は私の解釈が異なると同じのDataBufferを示しています
In [1307]: A.view(np.int16)
Out[1307]: array([ 1, 0, 123, 0, 0, 0], dtype=int16)
In [1310]: A.view('S4')
Out[1310]: array([b'\x01', b'{', b''], dtype='|S4')
それはときにのみ、私は、インデックス、私はnp.int32
オブジェクトを取得する単一の要素をです。
リストL=[1, 123, 0]
は異なります。それはポインターのリストです - int
オブジェクトへのポインタメモリ内のどこに。同様にdtype =オブジェクト配列。
ない完全な答えが、これはあなたがhttp://docs.scipy.org/doc/numpy-1.10.1/user/basics.types.html
ブール値を表す5つの基本的な数値型(ブール値)がありますが、整数(int型)、符号なし整数(UINT)浮動小数点(フロート)と複合体を始める必要があります。名前の数字を有するものは、そのタイプのビットサイズ(すなわち、メモリ内の単一の値を表すために必要なビット数)を示す。 intやintpなどのいくつかの型は、プラットフォーム(例えば、32ビットマシンと64ビットマシン)によってビットサイズが異なります。これは、ロー・レベルのコード(CやFortranなど)とのインタフェイス時に考慮に入れて、ロー・メモリーがアドレス指定されている場合に考慮する必要があります。
最も大きな違いは、numpyの種類がCの対応版と互換性があるということです。一つには、これはあなたが整数の配列を作成し、例えばnp.int32
として、データ型を指定することができる理由です
>>> np.int32(2**32)
0
... numpyのint型がオーバーフローすることができますことを意味します。 Numpyは指定された数の32ビット整数を保持するのに十分な大きさの配列を割り当てます。値が必要なときはC整数をnp.int32
に変換します(これは非常に速い)。 np.int32
とC-intから前後に変換できるという利点には、メモリの節約も含まれます。 Pythonオブジェクトは、一般的にはかなり大きいです:
>>> sys.getsizeof(1)
24
np.int32
がどの小さくない:
>>> sys.getsizeof(np.int32(1))
28
しかし、我々はnumpyの配列で作業しているほとんどの時間を覚えて、私たちは取り組んでいますCの整数は4バイト(24ではなく)だけをとります。配列からスカラー値を扱うときは、np.int32
で作業する必要があります。
いくつかの主な違いがあります。最初は、Pythonの整数は(少なくともPython 3.xでは)柔軟なサイズです。つまり、任意の数の任意のサイズに対応できるように成長することができます(もちろん、メモリの制約内で)。これに対してnumpyの整数は固定サイズです。これは、保持できる最大値があることを意味します。これは、整数(int32
対int64
)のバイト数で定義され、より多くのバイトが大きい数字を保持し、数値が符号付きか符号なし(int32
対uint32
)か、より大きい数字を保持できる負の数を保持することはできません。
なぜ、固定長整数を使用するのか尋ねることがありますか?その理由は、現代のプロセッサには、固定長の整数で数学を行うためのツールが組み込まれているため、それらの計算ははるかに高速です。実際、Pythonは、数値が小さすぎると固定長の整数を使用し、数値が大きすぎると柔軟性の低い整数に切り替えるだけです。
固定サイズの値のもう1つの利点は、同じタイプの一貫したサイズの隣接するメモリブロックに配置できることです。これは、データを格納するためにnumpy配列が使用する形式です。 numpyが依存するライブラリは、この形式のデータに対して非常に高速な計算を行うことができます。実際、最新のCPUには、この種の計算を高速化するための組み込みの機能があります。可変サイズのPython整数では、ブロックの大きさやデータ形式の一貫性がないと言うことができないため、このような計算は不可能です。
つまり、numpyは実際にはPython整数の配列を作ることができます。しかし、値を含む配列ではなく、実際のPython整数を保持する他のメモリへの参照を含む配列です。これは同じ方法で加速することはできません。したがって、すべてのPython整数が固定の整数サイズに収まる場合でも、それはまだ加速されません。
これはPython 2の場合ではありません。Python 2では、Python整数は固定された整数であり、numpy整数に直接変換できます。可変長整数の場合、Python 2はlong
の型を持っていました。しかし、これは混乱していました。この混乱は、特にパフォーマンスが必要な人たちが何となくそれを使用しているようなときに、パフォーマンスの向上に値するものではないと判断されました。
- 1. 新しいint型()と新しいint型betwee違いは何です[]
- 2. Haskellの型コンストラクタとjavaジェネリック型の違いは何ですか?
- 3. Haskellの型とデータ型の違いは何ですか?
- 4. はint型とunsigned int型
- 5. ハスケル型署名の型 "a"と型 "t"の違いは何ですか?
- 6. (int型、char型**)とint型のmain(int型のargc、char型** ARGV)
- 7. Bitmap.createBitmap(ビットマップソース、int型のx、int型のy、int型の幅、int型の高さ)間違ったビットマップを返し
- 8. Appceleratorの:BOMStream BOMStreamWithFileAndSys(int型、off_tでは、size_t型、int型、char型*、BomSys *)
- 9. C++の "型減算"とHaskellの "型推論"の違いは何ですか?
- 10. MySQLのBLOBデータ型とTEXTデータ型の違いは何ですか?
- 11. Typescriptでは、型とインターフェイスの違いは何ですか?
- 12. 宣言型プログラミングと命令型プログラミングの違いは何ですか?
- 13. 型とは何ですか?スカラーの型コンストラクタは何ですか?
- 14. ionic-nativeとionic-native/xxxの違いは何ですか?
- 15. c socket()関数の型とプロトコルの違いは何ですか?
- 16. cl_datatypeと通常のデータ型の違いは何ですか?
- 17. webassemblyデータ型のuint32とi32の違いは何ですか?
- 18. C#の参照型とrefの違いは何ですか?
- 19. MySQL BOOLとBOOLEANカラムのデータ型の違いは何ですか?
- 20. エラーは、引数に '* int型' から 'int型**' を変換できません '1' 'int型のショー(int型*)' に
- 21. 宣言型との違いは何ですか?
- 22. データ型変数と変数V2の違いは何ですか?
- 23. 制限付きワイルドカードと型パラメータの違いは何ですか?
- 24. Java:列挙型と値クラスの違いは何ですか?
- 25. テンプレートと多型の違いは何ですか
- 26. 相続と多型の違いは何ですか?
- 27. プリミティブクラスとプリミティブデータ型の違いは何ですか?
- 28. golang型アサーション、インタフェース{}(ポインタ)とインタフェース{}(オブジェクト)の違いは何ですか?
- 29. 多型と過負荷の違いは何ですか?
- 30. SMLのint - > int - > intと(int * int) - > intの違いは何ですか?
リンクのみの回答は低品質です。リンク内のトピックを詳しく説明してください。 – Li357