NumPy

NumPyについて

多次元配列とは?

NumPyとは?

※ NumPyのライブラリ詳細はこちら

NumPyにおけるデータ型

基本データ型

[APIドキュメント]

NumPyは内部ではC言語で実装されているため、C言語のデータ型に対応するデータ型とそのエイリアスが定義されています。
主要なデータ型は以下の通りです。

np.int8 / np.int16 / np.int32 / np.int64符号あり 8/16/32/64 ビット整数型
np.uint8 / np.uint16 / np.uint32 / np.uint64符号なし 8/16/32/64 ビット整数型
np.float16 / np.float32 / np.float64 / np.float128浮動小数点型 (それぞれ半精度 / 単精度 / 倍精度 / 四倍精度)

NumPyの関数・メソッドでデータ型を指定する際は、例えば int8 型の場合は以下のようにします。

np.zeros((10, 10), np.int8)   # NumPyのデータ型で指定する
np.zeros((10, 10), 'int8')    # 文字列として指定する

また、Pythonのデータ型(int, float, strなど)で指定すると、等価なNumPyデータ型に変換されます。(どのNumPyデータ型に変換されるかは環境によって異なります)

np.zeros((10, 10), int)   # Pythonのデータ型で指定する

array-like 型について

NumPyだけに限らず、SciPy.orgのパッケージ(pandas, Matplotlib など)では、APIドキュメントにarray-like 型というのが頻繁に出てきます。実はこのarray-likeというのは、Pythonにおける何か特定の型を表すのではなく、「ここに指定された値は配列として解釈されます」と宣言しているにすぎません。

つまり、関数・メソッドの引数がarray-like 型の場合は、引数として指定できる値は配列でもスカラーでも、リストでもなんでもよいということになります。ただし、その引数を受け取った関数・メソッドは、その値を配列として解釈しようとします。そして、配列として解釈できない場合はそのデータ型の0次元配列として処理されます。

NumPyにおける数学計算関数

  • NumPyではsin, cosなど、mathモジュールが提供する関数と同名の関数を提供し、ブロードキャストが実装されています。

ブロードキャスト