コンテンツにスキップ

Numpy Basic

1次元配列の作成

# ライブラリをロード
import numpy as np

# 行としてベクトルを作成
vector_row = np.array([1, 2, 3])

# 列としてベクトルを作成
vector_column = np.array([[1],
                          [2],
                          [3]])

2次元配列の作成

# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, 2],
                   [1, 2],
                   [1, 2]])

##########

matrix_object = np.mat([[1, 2],
                        [1, 2],
                        [1, 2]])

疎行列の作成(非ゼロ行列)

# ライブラリをロード
import numpy as np
from scipy import sparse

# 行列を作成
matrix = np.array([[0, 0],
                   [0, 1],
                   [3, 0]])

#  CSR(compressed sparse row) 形式の行列を作成
matrix_sparse = sparse.csr_matrix(matrix)

# 疎行列を表示
print(matrix_sparse)

行列のサイズ/要素数/次元の取得

# -*- coding: utf-8 -*-
# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, 2, 3, 4],
                   [5, 6, 7, 8],
                   [9, 10, 11, 12]])

# 行数、列数を表示
matrix.shape

##########

# 要素数(行数 * 列数)を表示
matrix.size

##########

# 次元数を表示
matrix.ndim

配列要素への回数の適用

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

# 引数に100を加える関数を作成
add_100 = lambda i: i + 100

# ベクトル化された関数を作成
vectorized_add_100 = np.vectorize(add_100)

# この関数をmatrixのすべての要素に適用
vectorized_add_100(matrix)

行列内の最大/最小要素の取得

# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

# 最大の要素を返す
# Return maximum element
np.max(matrix)

##########

# 最小の要素を返す
np.min(matrix)

##########

# 各列における最大要素を見つける
np.max(matrix, axis=0)

##########

# 各行における最大要素を見つける
np.max(matrix, axis=1)

行列内の平均/分散/標準偏差の取得

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

# 平均値を算出
np.mean(matrix)

# 分散を算出
np.var(matrix)

# 標準偏差を算出
np.std(matrix)

###########

# 各列の平均値を算出
np.mean(matrix, axis=0)

行列形状の変更

# -*- coding: utf-8 -*-
# ライブラリをロード
import numpy as np

# 4x3の行列を作成
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9],
                   [10, 11, 12]])

# 2x6の行列に形状変更
matrix.reshape(2, 6)

matrix.size

##########

matrix.reshape(1, -1)

##########

matrix.reshape(12)

転置行列の作成

# -*- coding: utf-8 -*-
# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

# 行列を転置
matrix.T

############

# ベクトルの転置
np.array([1, 2, 3, 4, 5, 6]).T

############

# 行ベクトルの転置
np.array([[1, 2, 3, 4, 5, 6]]).T

行列のフラット化(1次元に落とす)

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

# 行列をフラット化
matrix.flatten()

###########

matrix.reshape(1, -1)

行列ランクの取得

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, 1, 1],
                   [1, 1, 10],
                   [1, 1, 15]])

# 行列のランクを返す
np.linalg.matrix_rank(matrix)

行列式の計算(detの計算)

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, 2, 3],
                   [2, 4, 6],
                   [3, 8, 9]])

# 行列の行列式を算出
np.linalg.det(matrix)

行列対角要素の取得

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, 2, 3],
                   [2, 4, 6],
                   [3, 8, 9]])

# 対角要素を返す
matrix.diagonal()

##########

# 主対角要素の一つ上の副対角要素を返す
matrix.diagonal(offset=1)

##########

# 主対角要素の一つ下の副対角要素を返す
matrix.diagonal(offset=-1)

行列トレースの計算(対角要素の総和)

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, 2, 3],
                   [2, 4, 6],
                   [3, 8, 9]])

# トレースを返す
matrix.trace()

##########

# 対角要素を足し合わせたものを返す
sum(matrix.diagonal())

固有値/固有ベクトルの取得

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, -1, 3],
                   [1, 1, 6],
                   [3, 8, 9]])

# 固有値と固有ベクトルを計算
eigenvalues, eigenvectors = np.linalg.eig(matrix)

# 固有値を表示
eigenvalues

# 固有ベクトルを表示
eigenvectors

内積の計算

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# 2つのベクトルを作成
vector_a = np.array([1,2,3])
vector_b = np.array([4,5,6])

# 内積を計算
np.dot(vector_a, vector_b)

########## 

# 内積を計算
vector_a @ vector_b

行列の加算/減算

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# 行列を作成
matrix_a = np.array([[1, 1, 1],
                     [1, 1, 1],
                     [1, 1, 2]])

# 行列を作成
matrix_b = np.array([[1, 3, 1],
                     [1, 3, 1],
                     [1, 3, 8]])

# 2つの行列を加算
np.add(matrix_a, matrix_b)

##########

# 2つの行列の減算
np.subtract(matrix_a, matrix_b)

##########

# 2つの行列の加算
matrix_a + matrix_b

行列の乗算

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# 行列を作成
matrix_a = np.array([[1, 1],
                     [1, 2]])

# 行列を作成
matrix_b = np.array([[1, 3],
                     [1, 2]])

# 2つの行列を乗算
np.dot(matrix_a, matrix_b)

##########

# 2つの行列を乗算
matrix_a @ matrix_b

##########

# 2つの行列の要素ごとの乗算
matrix_a * matrix_b

逆行列の算出

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# 行列を作成
matrix = np.array([[1, 4],
                   [2, 5]])

# 逆行列を算出
# Calculate inverse of matrix
np.linalg.inv(matrix)

##########

# 行列とその逆行列を乗算
matrix @ np.linalg.inv(matrix)

乱数の生成

# -*- coding: utf-8 -*-

# ライブラリをロード
import numpy as np

# シード値を設定
np.random.seed(0)

# 0.0と1.0の間のランダムな浮動小数点値を3つ生成する。
np.random.random(3)

##########

# 1と10の間のランダムな整数値を3つ生成
np.random.randint(0, 11, 3)

##########

# 平均0.0、標準偏差1.0の正規分布から3つの数値を生成する。
np.random.normal(0.0, 1.0, 3)

##########

# 平均0.0、スケール1.0のロジスティック分布から3つの数値を生成
np.random.logistic(0.0, 1.0, 3)

##########

# 1.0以上で、2.0より小さい3つの数値を生成
np.random.uniform(1.0, 2.0, 3)
Back to top