プロジェクト

全般

プロフィール

Python numpy

はじめに

Pythonは、すべてのデータ(整数値、浮動小数点数値も)がオブジェクトとしてメモリ上に生成・配置され、メモリ管理の対象となります。
数値計算の分野では、多数のデータを配列に格納し演算のためにこれらをまとめて読み書きします。PythonはC言語などでの配列を型として用意しておらず、リストを使います。リストではデータ1個1個がオブジェクトとして独立にメモリ上に管理され、要素をまとめてアクセスする場合、配列に比べて非常に効率が悪くなります(例、メモリの局所性がないとキャッシュミスが起きてCPUの演算性能低下を招いてしまう)。
numpyは、データをC言語で記述されたライブラリ側で配列に格納し演算することでPythonメモリ管理の性能問題を回避し、またベクトル演算のAPIを介してPythonのアプリケーションとC言語で実装したnumpyライブラリ側のインタフェースを少なくすることでPythonとC言語間のオーバーヘッドを減らしています。

インストールとセットアップ

pip install numpy

ただし、numpyは他のライブラリ(Pandas等)で使われることも多く、そうしたライブラリをinstallした時に合わせてインストールされていることがあります。

import numpy

慣習的に、npの略名でエイリアスしてインポートすることもあります。import numpy as np

データ型

ndarray

多次元配列のndarray型が提供されます。配列の要素は全て同じ型である必要があります。

ndarrayの要素の型

int8, uint8, int16, uint16, int32, uint32, int64, uint64, float16, float32, float64, float128, complex64, complex128, complex256, bool, object, string_, unicode_

1次元のndarray

arr = np.array([1, 3, 5])

配列の要素の型は自動推論され、この場合はint64となりました。

arr = np.array([1.5, 3, 5]) とすると、配列の要素の型はfloat64となりました。

要素の型を指定して配列を生成することができます。

arr = np.array([1, 3, 5], dtype=np.float64)

2次元の要素の型

arr = np.array([1, 2, 3], [4, 5, 6])

matrix

T.B.D.

演算

ベクトル

単位ベクトル

長さ1のベクトルを求めます。直接生成するAPIはないので、ベクトルのnorm(長さ)を求めてから、ベクトルをその長さで除算して求めます。

vector = np.array([1, 3, 5])
norm = np.linalg.norm(vector)
unit_vector = vector / norm

外積

numpy.cross で外積の計算ができます。

行列

行列とベクトルの積

演算子 @ を用います。


11ヶ月前に更新