【NumPy】dtype (Data type)

【NumPy】dtype (Data type)

NumPy のデータ型 (dtype)

 NumPy には Python 本体に比べて遥かに多くの種類のデータ型 (Data type) が組込まれています。

NumPy データ型 説明
bool_ ブール型 (True または False), 1 byte に格納
int_ デフォルト整数型 (int64 または int32)
intc C言語と同じ整数型 (int64 または int32)
intp インデックス用整数 (C 言語の ssize_t, int64 または int32)
int8 バイト (-128 ~ 127)
int16 整数型 (-32768 to 32767)
int32 整数型 (-2147483648 to 2147483647)
int64 整数型 (-9223372036854775808 to 9223372036854775807)
uint8 符号なし整数 (0 ~ 255)
uint16 符号なし整数 (0 ~ 65535)
uint32 符号なし整数 (0 ~ 4294967295)
uint64 符号なし整数 (0 ~ 18446744073709551615)
float_ float64 の省略表記
float16 半精度浮動小数点数型 (符号 1 bit, 指数部 5 bit, 仮数部 10 bit)
float32 単精度浮動小数点数型 (符号 1 bit, 指数部 8 bit, 仮数部 23 bit)
float64 倍精度浮動小数点数型 (符号 1 bit, 指数部 11 bit, 仮数部 52 bit)
complex_ complex128 の省略表記
complex64 虚部・実部がそれぞれ32bit浮動小数点数で表される複素数型
complex128 虚部・実部がそれぞれ64bit浮動小数点数で表される複素数型
str ユニコード文字列
void Rawデータ

 
 データ型関数を使うと、Python の数値を NumPy の数値に変換することができます。

# PYTHON_NUMPY_DTYPE_01

import numpy as np

# 半精度浮動小数点数
x = np.complex64(3 + 2j)

print(x)
print(type(x))
(3+2j)

 

データ型の指定

 配列を生成するときに dtype にデータ型を渡すと、全ての要素が指定したデータ型に揃えられます。NumPy においては、1つの配列に含まれる要素のクラスは1種類に揃えられます(特に指定しなくても自動的に揃えられます)。引数は np.float32, あるいは "float32" のような記法で渡します。

# PYTHON_NUMPY_DTYPE_02-1

import numpy as np

x = np.array([1, 2, 3], dtype = np.float32)

print(x)
[1. 2. 3.]

 NumPy のデータ型関数にリストやタプルなどのシーケンスを渡すと、戻り値はシーケンスではなく配列となります。おそらく、これは最も簡潔な配列生成記法です。

# PYTHON_NUMPY_DTYPE_02-2

# 64bit複素数型の1次元配列を生成
x = np.complex_([1, 2, 3])

print(x)
[1.+0.j 2.+0.j 3.+0.j]

 complex_ は complex128 の省略記号であり、実部と虚部それぞれに 64 bit の浮動小数点数が使われています。
 

データ型の変更

 ndarray.astype() は配列のデータ型を変更します(元の配列を変更せずにコピーを作ります)。

# PYTHON_NUMPY_DTYPE_03

import numpy as np

x = np.int_([1, 2, 3])

y = x.astype(float)

print("x =", x)
print("y =", y)
x = [1 2 3]
y = [1. 2. 3.]

 

データ型の参照

 ndarray.dtype にアクセスすると配列のデータ型を参照できます。

# PYTHON_NUMPY_DTYPE_04

import numpy as np

x = np.complex64([1, 2, 3])

print("x =", x)
print("データ型", x.dtype)
x = [1.+0.j 2.+0.j 3.+0.j]
データ型 complex64

 

【技術英語の豆知識】alternate

 PC のキーボードに [alt] キーがあります。他のキーと一緒に押すと、そのキーの働きを変える機能をもちます。alt は alternate の頭文字です。alternate は「他の人やモノの代わりに使用できたり、選んだりできるもの」、つまり「代替の」を意味する単語です。動詞は alter (代わる)、名詞は alternative (代替) です。

  decent alternateive to MATLAB
  (MATLAB に代わる優れた製品)

のような表現で用いられます。印欧語源の altero は「二つのうち一方」を意味し、同根の英語に altercate (口論する) があります。ちなみに、Pythonista の皆さんなら「MATLAB に代わる優れた製品」はすぐにわかりますよね。言うまでもなく、Matplotlib のことですよ。え? まだ研究で MATLAB を使ってる!? すぐに Matplotlib に乗り換えましょう!