Numpyでベクトルや行列を作成する方法【線形代数】

Pythonで線形代数を扱いたい時は、行列やベクトルをNumPyで作成するのが一般的です。ここではそのための方法についてわかりやすく解説していきます。

目次

1. NumPyとは

NumPy は Numerical Python をつなげた言葉で「ナムパイ」と読みます。オープンソースのPythonライブラリであり、ほぼすべての科学技術計算やデータエンジニアリングに使われています。

1.1. NumPyのインストール

NumPyのインストールは簡単です。

Anacondaを使っているなら以下のコマンドを入力します。

conda install numpy

Anacondaを使っていない場合は以下のコマンドを入力します。

pip install numpy

まだPythonを入れていない場合は、Anacondaを使うことをおすすめします。Anacondaを使うと、pandas や scikit-learn などデータサイエンスに使う様々なパッケージをまとめてインストールすることができ、管理も簡単だからです。

1.2. NumPyのインポート

さて、NumPyをインストールしただけでは、まだNumPyを使うことができません。コードを書く時に、まず以下のコードでNumPyをインポートする必要があります。

なお、インポートとは何かについては『Pythonのモジュールについて抑えておくべき知識とよく使うもの一覧』の前半で解説しています。この記事では「モジュール」と表現していますが、これは「ライブラリ」や「パッケージ」と同じ意味だと捉えて頂いて問題ありません。

import numpy as np

慣習的にNumPyのインポート名は np で統一されています。こちらの方がNumPy を扱う際に時間の節約になりますし、コードが読みやすくなるからです。

さて、NumPyの始め方がわかったところで、次にNumPyで扱うデータである配列について理解を深めていきましょう。

2. NumPyの配列とは

「配列」(英: array)は、NumPyにおいて中心的なデータです。以下のように値が格子状に格納された構造をしています。

In [1]:
import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a)
[1 2 3 4 5]

ご覧のように一見するとPython標準オブジェクトのリストとよく似ています。しかし科学技術計算やデータエンジニアリングには、リストよりもの配列の方が遥かに適しています。なぜなら、NumPyの配列はリストよりも高速かつコンパクトに動作しまし、データを格納するためのメモリ容量が遥かに少なく済むからです。

以上のことから、線形代数におけるベクトルや行列を扱うときは、NumPyの配列を利用することで、リストを使う場合よりもコードを最適化することができるのです。

3. NumPyの配列の作成

NumPyの配列の最大の特徴の一つとして、「次元」という概念があります。これによって、ベクトルや行列を表現することが可能になっています。実際にコードを見ながら確認していきましょう。

なお、配列の作成方法は以下の記事で解説していますので、ぜひご確認ください。

3.1. NumPy配列でベクトルを作成

ベクトルは 1次元の配列で表現します。1次元の配列とは、以下のように1行のみのデータ構造のことです。

In [1]:
import numpy as np
arr=np.array([1,2,3,4,5])
print("1次元配列:", arr)
1次元配列: [1 2 3 4 5]

この1次元配列は、線形代数におけるベクトルを意味します。

例えば、以下の2次元ベクトルを表したいとします。

\[
\vec{v}=\left[ \begin{array}{cc} 1 \\ 2 \end{array} \right]
\]

これはNumPy配列では次のように表します。

In [2]:
#2次元ベクトル
vec1=np.array([1,2])
print(vec1)
[1 2]

それでは、以下の3次元ベクトルはNumPy配列ではどう表すでしょうか。

\[
\vec{v}=\left[ \begin{array}{cc} 1 \\ 2 \\ 3 \end{array} \right]
\]

以下のように書きます。

In [3]:
#3次元ベクトル
vec2=np.array([1,2,3])
print(vec2)
[1 2 3]

3.2. NumPy配列で行列を作成

行列は2次元配列で表現します。2次元配列とは、以下のように行と列を持つデータ構造のことです。

In [1]:
import numpy as np
arr=np.array([[1,2],[3,4]])
print("2次元配列:\n", arr)
2次元配列:
 [[1 2]
 [3 4]]

この2次元配列は、線形代数における行列を意味します。例として、以下の2次正方行列をNumPy配列で表してみましょう。

\[
mat=\left[ \begin{array}{cc} 1 & 2 \\ 3 & 4 \end{array} \right]
\]

これは次のように書きます。

In [2]:
#2x2行列
mat1=np.array([[1,2],[3,4]])
print(mat1)
[[1 2]
 [3 4]]

行数と列数が異なる非正方行列も作成できます。以下の \(2\times3\) の行列を表してみましょう。

\[
mat=\left[ \begin{array}{cc} 1 & 2 & 3 \\ 4 & 5 & 6 \end{array} \right]
\]

次のように書きます。

In [3]:
#2x3行列
mat2=np.array([[1,2,3],[4,5,6]])
print(mat2)
[[1 2 3]
 [4 5 6]]

任意のサイズの行列を作成することが可能です。

In [4]:
#3x3行列
mat3=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(mat3)
[[1 2 3]
 [4 5 6]
 [7 8 9]]

3.3. 複数のベクトルや行列を作成

なお3次元の配列を使えば、複数のベクトルや行列を一度に表すことが可能です。これを知っておくと、複数のベクトルや行列の計算が一括でできるので便利です。

例えば以下は3つの3次元ベクトルを表しています。

In [1]:
import numpy as np
# 3次元ベクトルが3つ
vecs=np.array([[[1,2,3]],[[4,5,6]],[[7,8,9]]])
print(vecs)
[[[1 2 3]]

 [[4 5 6]]

 [[7 8 9]]]

以下は3つの2次正方行列を表しています。

In [2]:
# 2次正方行列が3つ
mats=np.array([[[1,2],[3,4]],[[5,6],[7,8]],[[9,0],[1,2]]])
print(mats)
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]

 [[9 0]
  [1 2]]]

4. まとめ

以上がNumPyでベクトルや行列を作成する方法です。Pythonではこれらの配列を使って、線形代数のさまざまな演算を行うことができますので、ぜひ覚えておきましょう。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる