トップページに戻る

Numpyの基礎(4)データ型

In [1]:
import numpy as np
import matplotlib.pyplot as plt

Numpyのデータ型

既に出てきたように、ndarrayには様々なdtypeが存在します。
Cなどと連携するときやバイナリ入出力のときに知らないと困ると思います。
Numpyでの型とそれに対応するC言語、Fortranでの型を表でまとめると以下のようになります。

説明 C言語 Fortran
int32 / uint32 符号あり/なし 32ビット整数型(4バイト) long もしくは int INTEGER
int64 / uint64 符号あり/なし 64ビット整数型(8バイト) long long int INTEGER(8)
float32 単精度浮動小数点数型 float REAL もしくはREAL(4)
float64 倍精度浮動小数点数型 double REAL(8)
complex64 実部・虚部それぞれ単精度 float complex COMPLEX もしくは COMPLEX(4)
complex128 実部・虚部それぞれ倍精度 double complex COMPLEX(8)
bool 真偽値(TrueとFalse) (bool) LOGICAL
object 任意のPythonオブジェクト
string_ 固定長文字列型 char* CHARACTER(LEN=○)
unicode_ 固定長ユニコード文字列型

ndarrayのdtypeのキャストはastypeを使います。

In [2]:
a = np.arange(0, 2, 0.2)
a 
Out[2]:
array([0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8])
In [3]:
a.dtype
Out[3]:
dtype('float64')
In [4]:
a.astype(np.int32) # 4バイト整数にキャスト
Out[4]:
array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1])
In [5]:
a.astype(np.complex128) # 倍精度複素数にキャスト
Out[5]:
array([0. +0.j, 0.2+0.j, 0.4+0.j, 0.6+0.j, 0.8+0.j, 1. +0.j, 1.2+0.j,
       1.4+0.j, 1.6+0.j, 1.8+0.j])
In [6]:
# 文字列を小数に変換
np.array(['1.', '-0.001', '6.823e256']).astype(np.float64)
Out[6]:
array([ 1.000e+000, -1.000e-003,  6.823e+256])
In [7]:
# 要素のバイト数(倍精度浮動小数点数なので8バイト)
a.strides
Out[7]:
(8,)
In [8]:
# 倍精度複素数なので16バイト
a.astype(np.complex128).strides
Out[8]:
(16,)

誤字やおかしい点などがあったら @zawawahoge (Twitter) にお気軽にご連絡ください。

トップページに戻る