NumPy データ型の探索

Beginner

はじめに

この実験では、Python の NumPy ライブラリのデータ型について学びます。dtypeオブジェクトの構文とそのパラメータを見ていきます。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。

学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

NumPy dtype オブジェクトの理解

NumPy では、配列のすべての要素はデータ型オブジェクトであり、これはNumPy の dtypeとも呼ばれます。データ型オブジェクトは、配列に対応するメモリの固定サイズを実装するために使用されます

主に以下の情報を提供します。

  • データの型(たとえば、整数浮動小数点数、または Python のオブジェクト
  • データのサイズ
  • バイトオーダー(リトルエンディアンまたはビッグエンディアン)
  • 構造体型の場合、フィールド名各フィールドのデータ型、および各フィールドが占有するメモリブロックの一部について教えてくれます。
  • データ型がサブ配列の場合その形状とデータ型について教えてくれます。

NumPy dtype オブジェクトの作成

以下に、dtypeオブジェクトを作成するために必要な構文を示します。

numpy.dtype(object, align, copy)

上記のコンストラクタの引数の説明は以下の通りです。

  • object:この引数は、データ型に変換するオブジェクトを表すために使用されます。
  • align:オプションの引数です。C コンパイラが同様の C 構造体に対して出力するものに合わせるために、フィールドにパディングを追加するために使用されます。この引数は任意のブール値に設定できます。
  • copy:この引数は、dtypeオブジェクトのコピーを作成するために使用され、またオプションの引数です。

NumPy における数値型データ型

NumPy ライブラリは主に、Python が提供するものよりもより広範な数値型データ型を提供します。数値型データ型の一覧は以下の表に示します。

番号 データ型 説明
1 bool_ 真偽を表すブール値を表すために使用されます。バイトとして格納されます。
2 int_ 整数のデフォルト型です。主に 64 ビットまたは 32 ビット整数を含む C 言語の long 型と同じです。
3 intc C 言語の整数(C int)と同様で、32 ビットまたは 64 ビットの int を表します。
4 intp インデックスに使用される整数を表すために使用されます。
5 int8 1 バイトと同じ 8 ビット整数です。値の範囲は -128 から 127 です。
6 int16 2 バイト(16 ビット)の整数で、範囲は -32768 から 32767 です。
7 int32 4 バイト(32 ビット)の整数です。範囲は -2147483648 から 2147483647 です。
8 int64 8 バイト(64 ビット)の整数で、範囲は -9223372036854775808 から 9223372036854775807 です。
9 uint8 1 バイト(8 ビット)の符号なし整数です。
10 uint16 2 バイト(16 ビット)の符号なし整数です。
11 uint32 4 バイト(32 ビット)の符号なし整数です。
12 uint64 8 バイト(64 ビット)の符号なし整数です。
13 float_ float64と同じです。
14 float16 半精度浮動小数点数を表すために使用されます。指数には 5 ビット、仮数には 10 ビット、符号には 1 ビットが割り当てられます。
15 float32 単精度浮動小数点数を表すために使用されます。指数には 8 ビット、仮数には 23 ビット、符号には 1 ビットが割り当てられます。
16 float64 倍精度浮動小数点数を表すために使用されます。指数には 11 ビット、仮数には 52 ビット、符号には 1 ビットが割り当てられます。
17 complex_ complex128と同じです。
18 complex64 実部と虚部がそれぞれ 32 ビットを占める複素数を表すために使用されます。
19 complex128 実部と虚部がそれぞれ 64 ビットを占める複素数を表すために使用されます。

NumPy において dtype を表すために使用される文字

NumPy においてdtypeを表すために使用される文字の一覧は以下の通りです。

  • i:整数
  • b:ブール値
  • u:符号なし整数
  • f:浮動小数点数
  • c:複素浮動小数点数
  • m:時間差
  • M:日付と時刻
  • O:オブジェクト
  • S:文字列
  • U:Unicode 文字列
  • V:その他の型(void)のための固定メモリチャンク

例 1: 配列のデータ型を求める

文字列が含まれる配列のデータ型を求めてみましょう。

import numpy as np

ar1 = np.array(['chair', 'book', 'notebook'])
print(ar1.dtype)

出力:

<U8

例 2: dtypeオブジェクトを構築する

numpy.dtype関数を使ってdtypeオブジェクトを作成できます。

import numpy as np

dt1 = np.dtype(np.int64)
print (dt1)

出力:

int64

例 3: 数値型データ型の短縮表記を使用する

次の例では、数値型データ型の短縮表記を使用します。

import numpy as np

a = np.dtype('i4')
print (a)

出力:

int32

例 4: 構造体付きdtypeオブジェクトを作成する

構造体付きのデータ型を作成し、ndarrayオブジェクトに適用します。

import numpy as np

## キーと値の情報
a = np.dtype([('rollno',np.int16)])
print(a)

a = np.array([(101,),(201,),(301,)], dtype=a)
print(a)

出力:

[('rollno', '<i2')]
[(101,) (201,) (301,)]

例 5: データ型を変更する

次の例では、intをパラメータ値として使用して、データ型をfloatから整数に変更します。

import numpy as np

ar= np.array([1.1, 2.1, 3.1])

newarr = ar.astype(int)

print(newarr)
print(newarr.dtype)

出力:

[1 2 3]
int64

まとめ

この実験では、配列内のデータ型の概念について学びました。dtypeオブジェクトが値のデータ型を指定するためにどのように使用されるか、その構文、およびdtypeオブジェクトに必要なパラメータについて見てきました。また、さまざまな数値型データ型とそれに対する理解を深めるためのいくつかの例についても学びました。