NumPy データ型
numpy がサポートするデータ型は Python 組み込みの型よりもはるかに多く、基本的には C 言語のデータ型に対応しています。そのうち一部の型は Python 組み込みの型に対応しています。以下の表に、よく使われる NumPy の基本型を示します。
| 名前 | 説明 |
|---|---|
| bool_ | ブール型データ型(True または False) |
| int_ | デフォルトの整数型(C 言語の long に類似、int32 または int64) |
| intc | C の int 型と同じで、通常は int32 または int64 |
| intp | インデックスに使用する整数型(C の ssize_t に類似、通常は int32 または int64) |
| int8 | バイト(-128 から 127) |
| int16 | 整数(-32768 から 32767) |
| int32 | 整数(-2147483648 から 2147483647) |
| int64 | 整数(-9223372036854775808 から 9223372036854775807) |
| uint8 | 符号なし整数(0 から 255) |
| uint16 | 符号なし整数(0 から 65535) |
| uint32 | 符号なし整数(0 から 4294967295) |
| uint64 | 符号なし整数(0 から 18446744073709551615) |
| float_ | float64 型の略称 |
| float16 | 半精度浮動小数点数。符号ビット 1 個、指数ビット 5 個、仮数ビット 10 個を含む |
| float32 | 単精度浮動小数点数。符号ビット 1 個、指数ビット 8 個、仮数ビット 23 個を含む |
| float64 | 倍精度浮動小数点数。符号ビット 1 個、指数ビット 11 個、仮数ビット 52 個を含む |
| complex_ | complex128 型の略称、すなわち 128 ビットの複素数 |
| complex64 | 複素数。2 つの 32 ビット浮動小数点数(実数部と虚数部)を表す |
| complex128 | 複素数。2 つの 64 ビット浮動小数点数(実数部と虚数部)を表す |
numpy の数値型は実際には dtype オブジェクトのインスタンスであり、一意の文字に対応します。np.bool_、np.int32、np.float32 などがあります。
データ型オブジェクト (dtype)
データ型オブジェクト(numpy.dtype クラスのインスタンス)は、配列に対応するメモリ領域がどのように使用されるかを記述するために使われます。データの以下の側面を記述します:
- データの型(整数、浮動小数点数、または Python オブジェクト)
- データのサイズ(例:整数を何バイトで格納するか)
- データのバイト順(リトルエンディアンまたはビッグエンディアン)
- 構造化タイプの場合、フィールドの名前、各フィールドのデータ型、および各フィールドが占めるメモリブロックの部分
- データ型がサブ配列の場合、その形状とデータ型が何であるか。
バイト順は、データ型に事前に設定することによって< 或 >決定されます。<リトルエンディアンを意味します(最小値が最小アドレスに格納されます。つまり下位バイトが先頭に置かれます)。>ビッグエンディアンを意味します(最上位バイトが最小アドレスに格納されます。つまり上位バイトが先頭に置かれます)。
dtype オブジェクトは以下の構文を使用して構築されます:
numpy.dtype(object, align, copy)
- object - 変換するデータ型オブジェクト
- align - true の場合、フィールドをパディングして C の構造体のようにします。
- copy - dtype オブジェクトをコピーします。false の場合、組み込みデータ型オブジェクトへの参照になります。
例
次に、例を通して理解していきましょう。
例 1
出力結果は次のとおりです:
int32
例 2
出力結果は次のとおりです:
int32
例 3
出力結果は次のとおりです:
int32
次の例は、構造化データ型の使用法を示しています。型フィールドと対応する実際の型が作成されます。
例 4
出力結果は次のとおりです:
[('age', 'i1')]
例 5
出力結果は次のとおりです:
[(10,) (20,) (30,)]
例 6
出力結果は次のとおりです:
[10 20 30]
次の例では、文字列フィールド name、整数フィールド age、浮動小数点フィールド marks を含む構造化データ型 student を定義し、この dtype を ndarray オブジェクトに適用します。
例 7
出力結果は次のとおりです:
[('name', 'S20'), ('age', 'i1'), ('marks', 'f4')]
例 8
出力結果は次のとおりです:
[(b'abc', 21, 50.) (b'xyz', 18, 75.)]
各組み込み型には、それを一意に定義する文字コードがあります。次のとおりです:
| 文字 | 対応する型 |
|---|---|
| b | ブール型 |
| i | (符号付き) 整数型 |
| u | 符号なし整数型 |
| f | 浮動小数点型 |
| c | 複素数浮動小数点型 |
| m | timedelta(時間間隔) |
| M | datetime(日時) |
| O | (Python) オブジェクト |
| S, a | (バイト)文字列 |
| U | Unicode |
| V | 生データ (void) |