トップページに戻る

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], dtype=int32)
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,)

基礎編

応用編