Numpyのアレコレ
NumPyとは
- Numerical Pythonの略称
- 科学技術用途を中心としたプログラミングで高い利便性を持つライブラリ
- Pythonで数値計算するための基礎的なライブラリ
- PythonはJavaやCに比べ処理速度が遅いという弱点があるがNumPyが補ってくれる
- C/C++やFortranのコードを統合するためのツール
- C/C++によるメモリ管理を行った計算をNumPyのライブラリが実行することで高速計算が可能
特徴
- 高速な数値計算
- 多次元配列を基本的なデータ構造として操作するライブラリ
- 大量のデータを高速に演算するためndarray(N-dimensional array)という独自のデータ構造を使用
インストールするには
プロンプトから以下を入力。Anacondaをインストールしていれば、Anacondaプロンプトを使用。
> pip install numpy
バージョン指定してインストールするには以下。
> pip install numpy==1.16.0
インストールされたか確認するには
プロンプトから以下を入力する。
> pip list
知っておきたいこと
ndarrayについて
- ndarrayとはN-dimensional arrayの略。N次元配列を略したもの
- 同じ型(データ型)やサイズ(次元)が等しい複数の要素を格納する多次元のコンテナ(入れ物)
- コンテナのサイズは固定されている
- 要素ごとにデータ型を変えることはできない
- ndarrayの要素はインデックスを利用して値を取り出せる(Pythonのlistと同じ)
- また、スライシング(複数の要素を指定して切り出す)できる(Pythonのlistと同じ)
データ型
データ型 int(符号付きの整数) | 概要 |
---|---|
int8 | 8ビットの符号付き整数 |
int16 | 16ビットの符号付き整数 |
int32 | 32ビットの符号付き整数 |
int64 | 64ビットの符号付き整数 |
データ型 uint(符号なしの整数) | 概要 |
---|---|
uint8 | 8ビットの符号なし整数 |
uint16 | 16ビットの符号なし整数 |
uint32 | 32ビットの符号なし整数 |
uint64 | 64ビットの符号なし整数 |
データ型 | 概要 |
---|---|
float16 | 16ビットの浮動小数点数 |
float32 | 32ビットの浮動小数点数 |
float64 | 64ビットの浮動小数点数 |
float128 | 128ビットの浮動小数点数 |
ちなみに、8ビット(bit)= 1バイト(byte)
copy と view の違い
copy は遅い!なるべくviewを使うこと!
メモリ効率の観点から大きな配列になるほどviewを使った方がよい。
- copy :元の配列と違うメモリを使用しているが、要素が同一の意味をもつもの
- view:元の配列と同じメモリを参照しているもの
appendについて
Python のリストで要素を追加するappendという関数がある。
NumPyにも同様の関数があり、np.appendという。
でも、Python の append のほうが実行速度が早いから、なるべくnp.appendは使わない方がよい。
理由はnp.append では要素のコピーが発生するから。
appendの速度比較
# NumPy の np.append を使用した場合
import numpy as np
import time
t0 = time.time()
a = np.array([1, 2, 3])
for i in range(10000):
a = np.append(a, [i])
t1 = time.time() - t0
print("時間:", float(t1))
>
時間: 0.04089069366455078
# Python の append を使用した場合
import numpy as np
import time
t0 = time.time()
a = [1, 2, 3]
for i in range(10000):
a.append(i)
t1 = time.time() - t0
print("時間:", float(t1))
>
時間: 0.0009970664978027344
約41倍速い。私のパソコン環境はこちら。
ディスカッション
コメント一覧
まだ、コメントがありません