【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

# In[1]

import numpy as np

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

print(x)
print(type(x))

# (3+2j)
<class 'numpy.complex64'>

 

データ型の指定

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

# In[2]

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

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

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

# In[3]

# 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() は配列のデータ型を変更します(元の配列を変更せずにコピーを作ります)。

# In[4]

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 にアクセスすると配列のデータ型を参照できます。

# In[5]

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

print("x =", x)
print("データ型", x.dtype)

# x = [1.+0.j 2.+0.j 3.+0.j]
# データ型 complex64