python PR

Python初心者必見!データ分析に必須のNumPy入門から活用までの完全ガイド

Python データ分析 Numpy
記事内に商品プロモーションを含む場合があります

Numpyはデータ分析や機械学習の現場で日々活用されており、データアナリストやデータサイエンティストの必須スキルです

この記事では、Numpyを用いたデータ分析の基本をわかりやすく解説していきます

あなたもNumpyの魅力に触れ、データ分析の世界へ一歩踏み出しましょう

この記事でわかること
  • Numpyの基礎知識
  • データ分析のサンプルコード

筆者について

2021年から本格的にPython学習を始め、今ではPythonによる収益化に成功

大学院時代には、R言語とPythonを使って統計処理を行っていたため、Pythonを使ったデータサイエンスの知識が豊富

医療データを機械学習を用いて解析したり、学会発表も行なっている

Pythonでデータ分析を始めよう!挫折しない実践ガイドでスキルアップ

Pythonで機械学習に学んで実装してみよう【サンプルコードあり】 

Numpyとは?

Numpyとは?

NumPyは、Pythonで数値計算を効率的に行うためのライブラリです

多次元配列を扱うことができるほか、線形代数や統計処理などの高度な数学的演算が可能で、NumPyはデータサイエンスや機械学習の分野で広く利用されています

NumpyはPandasやScikit-learnなどの基盤ともなっています

Numpyでできること

Numpyでできること
  • 多次元配列の操作

Numpyは、効率的なndarrayという多次元配列を提供しており、リストに比べて高速でメモリ効率が良いのが特徴です

これにより、大量のデータを扱う際にもパフォーマンスを維持しながら、データの操作や計算が可能です

  • 数学的関数の提供

Numpyでは、様々な数学的関数を提供しており、これらの関数をndarrayに適用することで、数値データに対する高度な計算が容易に行えます

  • 線形代数のサポート

行列の積や転置、逆行列、固有値・固有ベクトルの計算など、線形代数に関する機能も充実

線形代数のサポートによって、機械学習アルゴリズムの実装や最適化問題の解決が効率的に行えます

  • 統計関数の提供

平均、中央値、標準偏差、相関係数など、基本的な統計関数も使うことができます

統計関数を使うことで、データ分析や前処理に必要な統計情報を簡単に取得することが可能

  • ブロードキャスティング機能

Numpyには、ブロードキャスティングという機能を利用して、異なる形状の配列同士の演算を行うことができます

ブロードキャスティングを使うことで、コードがシンプルかつ効率的になり、計算処理が高速化されます

  • 乱数生成

様々な確率分布から乱数を生成する機能あり、シミュレーションや機械学習の初期値設定など、乱数が必要な場面で簡単に利用できます

NumPyのインストールと基本操作

NumPyのインストールと基本操作

Numpyはデータ分析や機械学習を行う上で重要なPythonライブラリです

ここでは、NumPyのインストール方法と基本操作について解説をしていきます

まずはライブラリを正しくインストールし、基本的な操作に慣れていきましょう

NumPyのインストール方法

NumPyのインストール方法

NumPyは、Pythonのパッケージ管理ツール(pip)を使って簡単にインストールできます

以下のコマンドを実行して、NumPyをインストールしていきましょう

pip install numpy

Anacondaを使用している場合には、次のコマンドを実行して、インストールしていきます

conda install numpy

NumPyのインポート

NumPyのインポート

NumPyをインストールしたら、PythonスクリプトやJupyter NotebookでNumPyをインポートします

慣習として、npという名前を使ってインポートします

import numpy as np

配列(ndarray)の作成

配列(ndarray)の作成

NumPyの基本的なデータ構造は、ndarrayという多次元配列です

以下のようにnp.array()関数を使って、リストから配列を作成できます

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

配列の基本操作

配列の基本操作

ここからはNumPyで扱う配列の基本操作について解説します

形状変更、配列の属性や形状変更など、配列操作の基本を押さえてデータ分析に臨みましょう

配列の属性

配列の属性

配列には、次元数(ndim)、形状(shape)、要素数(size)、データ型(dtype)などの属性があります

これらの属性を使って、配列の構造を把握することができます

print(arr.ndim)
print(arr.shape)
print(arr.size)
print(arr.dtype)

配列の形状変更

配列の形状変更

Numpyでは、ndarrayの形状を変更するためにreshape関数を使います

reshape関数を使うことで、データの構造を柔軟に変更し、データ分析に適した形に整形できます

例えば、1次元配列を2次元配列に変換する場合は次のようになります

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
reshaped_arr = arr.reshape(2, 3)
print(reshaped_arr)

上記のコードでは、6つの要素を持つ1次元配列arrを2行3列の2次元配列に変換しています

reshape関数の引数に新しい形状を指定することで、簡単に配列の形状を変更できます

配列の要素へのアクセス

配列の要素へのアクセスNumpyのndarrayでは、配列の要素にインデックスを使ってアクセスできます

インデックスは0から始まり、多次元配列の場合はカンマで区切って指定します

2次元配列の要素へのアクセス方法のサンプルコードは以下です

import numpy as np

arr = np.array([[1, 2, 3],
                ])

# 配列の(0, 1)の位置にある要素を取得
element = arr[0, 1]
print(element)  # 結果: 2

上記のコードでは、2行3列の2次元配列arrから、1行目の2列目にある要素を取得しています

Python初心者の方でも簡単に理解できるように、Numpyは慣習的なインデックス表記を採用しています

これにより、データ分析の過程で配列内の特定の要素に素早くアクセスできます

配列の生成と初期化

配列の生成と初期化

ここからはNumPy配列を生成・初期化する方法について解説をしていきます

要素が0や1の配列や、ランダムな値を持つ配列など、さまざまな配列を簡単に生成できる方法をマスターしていきましょう

一様乱数を生成する方法

一様乱数を生成する方法

NumPyを使って一様乱数を生成するには、np.random.rand()やnp.random.randint()関数を使用します

これらの関数を使って、任意の範囲の乱数を含む配列を作成できます

random_floats = np.random.rand(3, 3)  # 3x3の0から1の一様乱数を含む配列
random_ints = np.random.randint(0, 10, (3, 3))  # 3x3の0から9の整数乱数を含む配列

一様乱数とは、ある範囲内のすべての数値が同じ確率で生成される乱数のこと

一様分布に従う乱数とも言われます

例えば、0から1の範囲で一様乱数を生成すると、この範囲内のどの数値も同じ確率で出現します

ゼロや単位行列の作成

ゼロや単位行列の作成全ての要素がゼロの配列や、単位行列を作成するには、np.zeros()関数やnp.eye()関数を使用します

zeros = np.zeros((3, 3))  # 3x3のゼロ行列
identity = np.eye(3)  # 3x3の単位行列

範囲指定での配列生成

範囲指定での配列生成np.arange()関数やnp.linspace()関数を使って、特定の範囲や間隔で数値を生成することもできます

arr_range = np.arange(0, 10, 2)  # 0から9までの範囲で、2刻みの配列
arr_linspace = np.linspace(0, 1, 11)  # 0から1までの範囲を、11個の要素で分割した配列

数学的演算

数学的演算Numpyは多次元配列を扱える強みがありましたが、さらに力強い機能のひとつが数学的演算です

ここからは、基本的な算術演算から、高度な関数まで、NumPyが提供する豊富な数学的演算を紹介します

配列同士の演算

配列同士の演算NumPyを使って、配列同士の要素ごとの加算、減算、乗算、除算などの演算が容易に行うことができます

a = np.array([1, 2, 3])
b = np.array()

addition = a + b
subtraction = a - b
multiplication = a * b
division = a / b

スカラー演算

スカラー演算配列に対してスカラー値を加算、減算、乗算、除算することもできます

c = a + 5
d = a * 2

集約関数(最大値、平均値など)

集約関数(最大値、平均値など)NumPyには、配列の最大値、最小値、合計、平均値、分散、標準偏差などの統計量を計算する便利な関数もあります

max_value = np.max(a)
min_value = np.min(a)
sum_value = np.sum(a)
mean_value = np.mean(a)
variance = np.var(a)
standard_deviation = np.std(a)

配列の結合と分割

配列の結合と分割配列の結合や分割は、データ前処理において頻繁に行われる操作です

NumPyを使って効率的に配列を結合・分割する方法を覚えていきましょう

配列の結合(水平・垂直)

配列の結合(水平・垂直)NumPyでは、np.concatenate()、np.hstack()、np.vstack()などの関数を使って、配列を水平方向や垂直方向に結合できます

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])

horizontal_concat = np.hstack((arr1, arr2))
vertical_concat = np.vstack((arr1, arr2))

配列の分割(水平・垂直)

配列の分割(水平・垂直)np.split()、np.hsplit()、np.vsplit()などの関数を使って、配列を指定した数の部分配列に分割できます

arr = np.array([[1, 2, 3], , [7, 8, 9]])

horizontal_split = np.hsplit(arr, 3)
vertical_split = np.vsplit(arr, 3)

インデックスとスライシング

インデックスとスライシングここからはNumPy配列のインデックスとスライシングについて解説していきます

効率的なデータアクセス方法を習得し、データ分析の作業をスムーズに進めましょう

インデックスを利用した要素の取得

インデックスを利用した要素の取得NumPy配列では、インデックスを使って要素を取得できます

リストのインデックスと同様に、負のインデックスを使用して末尾からの要素にアクセスすることもできます

arr = np.array([1, 2, 3, 4, 5])
first_elem = arr[0]
last_elem = arr[-1]

スライシングによる部分配列の取得

スライシングによる部分配列の取得配列から部分配列を取得するには、スライシングを使います

スライシングは、start:end:stepの形式で指定します

arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
sub_arr = arr[2:8:2]  # 2から7までの範囲で、2刻みの要素を取得

ブールインデックス

ブールインデックスブールインデックスを使って、配列内の条件を満たす要素を抽出できます

import numpy as np

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

# 配列の各要素が3より大きいかどうかを評価し、ブール値の配列を作成
bool_arr = arr > 3
print(bool_arr)  # 結果: [False False False  True  True  True]

# ブールインデックスを使って、条件を満たす要素のみを抽出
result = arr[bool_arr]
print(result)  # 結果: 

上記のコードでは、arr配列から3より大きい要素を抽出するためにブールインデックスを利用しています

まず、arr > 3という条件式を使って、配列の各要素が3より大きいかどうかを評価し、ブール値の配列bool_arrを作成しています

次に、arr[bool_arr]とすることで、ブール値がTrueに対応する要素のみを新しい配列resultに抽出しています

ブールインデックスは、データ解析や機械学習でよく使用されるため、NumPyを使って効率的なデータ操作を行いたい場合は、ブールインデックスを理解しておくと役立ちます

ブールインデックスとは、NumPy配列に対してブール値(TrueまたはFalse)を使ったインデックス指定の方法

ブールインデックスを用いることで、配列から条件を満たす要素を効率的に抽出することができます

ブロードキャスト

ブロードキャストブロードキャストはNumPyの強力な機能で、異なる形状の配列間で演算を行うことができます

ブロードキャストの仕組みを理解することで、コードをシンプルかつ効率的にすることができます

ブロードキャストの概念

ブロードキャストの概念ブロードキャストは、形状の異なる配列間の演算を可能にするNumPyの機能です

自動的に形状を調整して、要素ごとの演算を行います

ブロードキャストの例

ブロードキャストの例次のサンプルコードでは、形状が異なる配列AとBがありますが、ブロードキャストによって形状が自動的に調整され、要素ごとの演算が可能になります

A = np.array([[1, 2, 3], , [7, 8, 9]])
B = np.array([1, 2, 3])

result = A + B  # ブロードキャストにより、AとBの形状が調整されて加算が行われる

線形代数の演算

線形代数の演算NumPyは線形代数の演算をサポートしています

行列の積、逆行列、固有値などの計算方法を学び、機械学習アルゴリズムの実装や最適化問題に活用していきましょう

行列の積

行列の積NumPyでは、np.dot()関数や@演算子を使って、行列の積を計算できます

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

product = np.dot(A, B)  # 行列の積
product_alt = A @ B  # @演算子を使った行列の積

逆行列と行列式

逆行列と行列式np.linalg.inv()関数を使って逆行列を計算し、np.linalg.det()関数を使って行列式を求めることができます

A_inv = np.linalg.inv(A)  # 逆行列
A_det = np.linalg.det(A)  # 行列式

固有値と固有ベクトル

固有値と固有ベクトルnp.linalg.eig()関数を使って、固有値と固有ベクトルを計算できます

eigenvalues, eigenvectors = np.linalg.eig(A)

まとめ

固有値と固有ベクトル

この記事では、Python初心者向けにNumPyの基本的な使い方と応用例を解説しました

NumPyは、データサイエンスやデータ分析・機械学習の分野で広く利用されており、効率的な数値計算が可能です

配列の生成や操作、数学的演算、線形代数の演算など、様々な機能を学ぶことで、NumPyを活用してデータ解析やアルゴリズムの実装ができるようになります

Numpyの理解ができたら、データ分析・機械学習にもチャレンジしてみましょう

Pythonでデータ分析を始めよう!挫折しない実践ガイドでスキルアップ

Pythonで機械学習に学んで実装してみよう【サンプルコードあり】

おすすめプログラミングスクール

DMMWEBCAMP
  • WEBCAMPはコスパ最強
  • WEBCAMPは初心者に優しい充実したサポート付き
  • 16週間プランを選択して、返金してもらおう
WEBCAMPの公式ページはこちら WEBCAMPの口コミ・評価はこちら
テックアカデミー  
  • テックアカデミーは費用対効果抜群
  • テックアカデミーのサポートは個人の能力に応じつつ、python初心者に優しい
  • まずは無料体験でテックアカデミーを知ってから受講を決める
テックアカデミーの公式ページはこちら テックアカデミーの口コミ・評価はこちら
キカガク
  • 多種多様なスキルコース
  • 初心者から専門家まで対象
  • 給付金利用で費用を抑えられる
キカガクの公式ページはこちら キカガクの口コミ・評価はこちら
Aidemy Premium
  • 完全オンラインで、時間や場所に縛られず学習したい
  • マンツーマン学習サポートにより実践に近い経験をしたい
  • 未経験から機械学習エンジニアになりたい
Aidemy Premiumの公式ページはこちら Aidemy Premiumの口コミ・評価はこちら
My Agile Privacy
This website uses technical and profiling cookies. Clicking on "Accept" authorises all profiling cookies. Clicking on "Refuse" or the X will refuse all profiling cookies. By clicking on "Customise" you can select which profiling cookies to activate.