Python

Python基礎:Numpy

スポンサーリンク

はじめに

今回はNumpyを扱います。NumpyはPythonの数値計算ライブラリです。ベクトルや行列など、機械学習で必要となる形式のデータを簡単に扱うことができるようになります。基本的なことから順に一見て整理をしていくことにしましょう。

Numpyの基礎

NumPyを使うと、ベクトルや行列などの多次元配列の処理を容易に行うことができるようになります。 Pythonだけで数値計算を行うのと比較して、非常に高速に処理を行うことができます 。

Numpyの配列

Numpyの配列はnp.array()で作成します。()の中にリストやタプルを指定します。実際に試してみましょう。

# ライブラリのインポート
import numpy as np

# Numpyの配列を作る
np.array([1,2,3,4,5])

Pythonのrange()のような書式で配列を作ることもできます。

  • np.arange(要素の個数) : 。1次元の行列を作る。
np.arange(1,5)
np.arange(1,10,3)

1次元の配列を次のような形で 作ることもできます。

  • np.linspace(a, b, c) : aからbまで等間隔にc個の要素をもつ1次行列を返す。
np.linspace(1,21,6)

多次元配列を作ることもできます。

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

2次元配列である、行列は次のように作ることもできます。

  • np.zeros(行列の形) : タプルを引数にとり、全ての要素が0である行列を返す
  • np.ones(行列の形)  : こちらは全ての要素が1である行列を返す

実際にコードを書いてみた方がわかりやすいですね。

np.zeros((4,5))
np.ones((4,3))

np.random.rand(行列の形) : 与えられた形で、各要素が0以上1以下の行列を返す。

random.rand(3,4)

配列の確認(属性)

NumPyの配列は、要素の型を混在させることができません。要素の型を確認するには、dtypeプロパティを使用します。

  • array.dtype : 要素のデータ型を確認できる。Pythonで扱えるデータ型に加えて、np.int64などのnumpy特有のものもある。
sample=np.array([[1,2,3],[4,5,6]])
sample.dtype

配列の構造を調べるには、shapeプロパティを使用します。

  • array.shape : 行列の形がタプルで返されます。
sample.shape

全体の要素数を調べるにはsizeプロパティを使います。

  • array.size : 行列の要素の全個数です。
sample.size

行列の次元を確認するにはndimプロパティを使います。

  • array.ndim : 行列の次元を表します。最初に何個 “[” が続いているかに対応します。
sample.ndim

ndimは多次元配列が何次元の構造をしているのかを意味しています。つまり、shapeの要素の数なのでlen(sample.shape)ということになります。

行列のインデックス・スライス・イテレーター化

PythonのListと同じように、イテレータとして扱うことができます。これは、 1次行列だけでなく、複数の次元を持つ行列についても同様に扱うことができます。ただし、複数の次元を持つ行列をイテレーターとして扱う時は、flat属性を使う、という点が注意事項です。辞書型をイテレーターとして扱う時にitems()を使うように、こういうものだと思っておけばよいでしょう。

X = np.arange(12).reshape(3, 4)
X
for element in X.flat:
    print(element)

行列を合成する

  • np.vstack((行列1, 行列2)) : 垂直方向に合体する。
  • np.hstack((行列1, 行列2)) : 水平方向に合体する。
  • np.column_stack((行列1, 行列2)) : 1次行列の組み合わせなら2次元行列を作り、多次元の組みならhstackと同じ振る舞いをする。
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
np.vstack((a, b))
np.hstack((a, b))  
np.column_stack((a, b)) 
スポンサーリンク

まとめ

いかがでしょうか?今回はNumpyの基礎を扱いました。慣れない操作は、試して動きを確認してから使うようにすれば、だんだん慣れてきます。繰り返しが大切ですね。

コメント

タイトルとURLをコピーしました