
NumPy基礎
こんにちは、コグラフ株式会社データアナリティクス事業部の平松です。
今回はPythonのメジャーライブラリの一つであるnumpyの基礎について、コードを用いて解説します。
これからNumPyを学び始めようという方、初心者の方は是非、御一読ください!
NumPyとは
NumPyは、数値計算を効率的に行うためのライブラリです。
ベクトルや行列といった対象を処理するのに便利です。
基本的な計算処理であればNumPyを使わずともできますが、大量のデータを処理するような場合には処理が遅くなるため、高速な数値計算が必要な場合にはNumPyを使うことが多いです。
ベクトル定義(横ベクトル・縦ベクトル・行列)
ベクトルを定義する際は、array関数を使う
a = np.array([1,2,3,4]) /*横ベクトル*/
b = np.array([[1],[2],[3],[4]]) /*縦ベクトル*/
c = np.array([[1,2],[3,4]]) /*行列*/
print(a)
print(b)
print(c)

単位行列
単位行列とは、行列の対角成分が全て1になっている正方行列のことです。
正方行列とは、行数と列数が一致している、n×nの行列のことです。
例は、3行3列の単位行列です。
単位行列にはeye関数を使います。
a = np.eye(3)
print(a)

次元の表示、データ型の表示
ndim属性は次元を出力、
dtype属性はデータ型を出力します。
a = np.array([[1,2],[3,4]])
print(a.ndim)
print(a.dtype)

行列積
numpyで積を求めるとき「@」を使います。
また、dot関数でも積を求めることができます。
a = np.array([[1,2],[3,4]])
b = np.array([[3,4],[5,6]])
print(a @ b)
/*または*/
print(a.dot(b))

アダマール積
アダマール積は「*」で求めます。
アダマール積は同じ形の行列に対して定義され、出力結果も同じ形の行列を返す。
a = np.array([[1,2],[3,4]])
b = np.array([[3,4],[5,6]])
print(a * b)

転置
行と列を入れ替えを行います。
a = np.array([[1,2],[3,4]])
print(a.T)


行列式の計算
det()は行列式、linalgは線形代数を意味します。
np.linalg.detで行列式の計算を行います。
a = np.array([[1,2],[3,4]])
b = np.linalg.det(a)
print(b)

逆行列の計算
invは逆行列を意味します。
np.linalg.invで逆行列を求められます。
a = np.array([[1,2],[3,4]])
b = np.linalg.inv(a)
print(b)

単位行列と逆行列
行列式を求めたとき、それが0でなければ逆行列が存在します。
その場合、元の行列と逆行列を掛けると単位行列になります。
a = np.array([[1,2],[3,4]])
b = np.linalg.det(a)
if b != 0:
c = np.linalg.inv(a)
print(a @ c)

配列の形状を変換
reshape関数は元配列と変形後の配列の要素数が同じである必要があります。
対して、resize関数は元の配列を変形して新しい配列を作成する関数です。
a = np.arange(10)
print(a)
print(a.reshape(2,5))


平方根(ルート)
np.sqrt関数は平方根を求めることができる関数です。
a = np.array([[1,2],[3,4]])
print(np.sqrt(a))

指数関数
np.expは「e の x 乗」を返します。
eとは、自然対数の底を指します。
なので、この例では、[[eの1乗 , eの2乗] , [eの3乗 , eの4乗]]を表す。
a = np.array([[1,2],[3,4]])
print(np.exp(a))

垂直方向に結合
vstack関数は指定した変数などを垂直方向に結合(縦結合)するものです。
VはVartical=垂直、Stack=積み上げという意味です。
a = np.array([[1,2],[3,4]])
b = np.array([[3,4],[5,6]])
print(np.vstack(a,b))

垂直方向に分解
vsplit関数は指定した変数などを垂直方向に分解(縦分解)するものです。
Split = 分裂という意味です。
a = np.array([[1,2],[3,4]])
print(np.vsplit(a,2))

水平方向に結合
hstack関数は指定した変数などを水平方向に結合(横結合)するものです。
HはHorizontal=水平、Stack=積み上げという意味です。
a = np.array([[1,2],[3,4]])
b = np.array([[3,4],[5,6]])
print(np.hstack((a,b)))

横に分解
hsplit関数は指定した変数などを水平方向に分解(横分解)するものです。
Split = 分裂という意味です。
a = np.array([[1,2],[3,4]])
print(np.hsplit(a,2))

データ分析に興味のある方募集中!
コグラフ株式会社データアナリティクス事業部ではPythonやSQLの研修を行った後、実務に着手します。
研修内容の充実はもちろん、経験者に相談できる環境が備わっています。
このようにコグラフの研修には、実務を想定し着実にスキルアップを目指す環境があります。
興味がある方は、下記リンクよりお問い合わせください。
Twitterもやってます!
コグラフデータ事業部ではTwitterでも情報を発信しています。
データ分析に興味がある、データアナリストになりたい人など、ぜひフォローお願いします!
📢Wantedly新掲載!
— アラリコ@コグラフ株式会社 | データ事業部 (@CographData) July 14, 2023
「データに興味がある」
「データに携わる仕事がしたい」
そこのあなた!
私たちと一緒にデータ分析しませんか?
IT業界未経験の方も大歓迎です☺️#エンジニア転職 #データ分析 #駆け出しエンジニアと繋がりたいhttps://t.co/S9o7VSjGRt