『Python数値計算ノート』ではアフィリエイトプログラムを利用して商品を紹介しています。

【NumPy】dtypeの一覧表

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

コメント

  1. あとりえこばと より:

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

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

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