NumPy配列操作

NumPyNumPyBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

NumPyは、数値計算に使用されるPythonライブラリです。配列や行列との操作に特化しており、科学的計算に強力なツールとなっています。この実験では、NumPy配列操作に関する以下の3つのトピックを学びます。

  1. 数学的演算
  2. ブロードキャスト
  3. ユニバーサル関数

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL numpy(("NumPy")) -.-> numpy/MathandStatisticsGroup(["Math and Statistics"]) numpy(("NumPy")) -.-> numpy/AdvancedFeaturesGroup(["Advanced Features"]) numpy(("NumPy")) -.-> numpy/ArrayBasicsGroup(["Array Basics"]) numpy/ArrayBasicsGroup -.-> numpy/1d_array("1D Array Creation") numpy/ArrayBasicsGroup -.-> numpy/multi_array("Multi-dimensional Array Creation") numpy/ArrayBasicsGroup -.-> numpy/shape_dim("Shapes and Dimensions") numpy/ArrayBasicsGroup -.-> numpy/data_type("Data Types") numpy/MathandStatisticsGroup -.-> numpy/math_ops("Math Operations") numpy/MathandStatisticsGroup -.-> numpy/stats("Statistical Analysis") numpy/AdvancedFeaturesGroup -.-> numpy/ufuncs("Universal Functions") subgraph Lab Skills numpy/1d_array -.-> lab-1403{{"NumPy配列操作"}} numpy/multi_array -.-> lab-1403{{"NumPy配列操作"}} numpy/shape_dim -.-> lab-1403{{"NumPy配列操作"}} numpy/data_type -.-> lab-1403{{"NumPy配列操作"}} numpy/math_ops -.-> lab-1403{{"NumPy配列操作"}} numpy/stats -.-> lab-1403{{"NumPy配列操作"}} numpy/ufuncs -.-> lab-1403{{"NumPy配列操作"}} end

数学的演算

NumPyは、配列に対するさまざまな数学的演算を提供します。これらの演算は、1つまたは複数の配列に対して行うことができます。

Pythonシェルを開く

ターミナルで次のコマンドを入力して、Pythonシェルを開きます。

python3

NumPyをインポートする

NumPyは既にインストールされていますので、Pythonコードでインポートすることができます。

import numpy as np

要素ごとの演算

要素ごとの演算とは、配列の各要素に対して行われる演算のことです。

2つの配列を作成して、いくつかの要素ごとの演算を行ってみましょう。

## 2つの配列を作成
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])

## 2つの配列を加算
print("2つの配列を加算: ", arr1 + arr2)

## 2つの配列を減算
print("2つの配列を減算: ", arr1 - arr2)

## 2つの配列を乗算
print("2つの配列を乗算: ", arr1 * arr2)

## 2つの配列を除算
print("2つの配列を除算: ", arr1 / arr2)

## 2つの配列の除算後の余りを求める
print("2つの配列の剰余: ", arr1 % arr2)

## 配列の要素をべき乗する
print("配列をべき乗: ", arr1 ** 2)

出力:

2つの配列を加算:  [ 6  8 10 12]
2つの配列を減算:  [-4 -4 -4 -4]
2つの配列を乗算:  [ 5 12 21 32]
2つの配列を除算:  [0.2        0.33333333 0.42857143 0.5       ]
2つの配列の剰余:  [1 2 3 4]
配列をべき乗:  [ 1  4  9 16]

配列全体に対する演算

配列全体に対する演算とは、配列全体に対して行われる演算のことです。

1つの配列を作成して、いくつかの配列全体に対する演算を行ってみましょう。

## 配列を作成
arr = np.array([1, 2, 3, 4])

## 配列のすべての要素の合計を求める
print("配列の合計: ", np.sum(arr))

## 配列のすべての要素の積を求める
print("配列の積: ", np.prod(arr))

## 配列の最小要素を求める
print("配列の最小要素: ", np.min(arr))

## 配列の最大要素を求める
print("配列の最大要素: ", np.max(arr))

## 配列のすべての要素の平均を求める
print("配列の平均: ", np.mean(arr))

## 配列のすべての要素の標準偏差を求める
print("配列の標準偏差: ", np.std(arr))

出力:

配列の合計:  10
配列の積:  24
配列の最小要素:  1
配列の最大要素:  4
配列の平均:  2.5
配列の標準偏差:  1.118033988749895

ブロードキャスト

ブロードキャストは、NumPyの機能であり、異なる形状の配列間で要素ごとの演算を可能にします。ブロードキャストは、異なる次元の配列を扱う際に特に便利です。

1つの配列を作成して、いくつかのブロードキャスト演算を行ってみましょう。

## 異なる形状の2つの配列を作成
array1 = np.array([1, 2, 3])
array2 = np.array([[4, 5, 6], [7, 8, 9]])

## 小さい配列を大きい配列にブロードキャスト
print("ブロードキャストを使って2つの配列を加算: ", array1 + array2)

print("ブロードキャストを使って2つの配列を減算: ", array1 - array2)

print("ブロードキャストを使って2つの配列を乗算: ", array1 * array2)

print("ブロードキャストを使って2つの配列を除算: ", array1 / array2)

出力:

ブロードキャストを使って2つの配列を加算:  [[ 5  7  9]
                                         [ 8 10 12]]

ブロードキャストを使って2つの配列を減算:  [[-3 -3 -3]
                                              [-6 -6 -6]]

ブロードキャストを使って2つの配列を乗算:  [[ 4 10 18]
                                              [7 16 27]]

ブロードキャストを使って2つの配列を除算:  [[0.25       0.4        0.5       ]
                                           [0.14285714 0.25       0.33333333]]

上記のコードでは、形状 (3,) の array1 と形状 (2,3) の array2 の2つの配列を作成します。NumPyのブロードキャスト機能のおかげで、array1array2 の間で要素ごとの演算を行います。小さい配列である array1 が、要素ごとの演算を行うために大きい配列である array2 にブロードキャストされます。ブロードキャストにより、異なる形状の配列に対して演算を行うことが可能になります。

ユニバーサル関数

ユニバーサル関数(またはufunc)は、要素ごとの方法で配列に対して操作する関数です。これらは、配列に対して高速かつ効率的な演算を提供します。

1つの配列を作成して、いくつかのufuncを実行してみましょう。

## 配列を作成
arr = np.array([1, 2, 3, 4])

## 配列の各要素の平方根を求める
print("配列の平方根: ", np.sqrt(arr))

## 配列の各要素の指数関数を求める
print("配列の指数関数: ", np.exp(arr))

## 配列の各要素のサインを求める
print("配列のサイン: ", np.sin(arr))

## 配列の各要素のコサインを求める
print("配列のコサイン: ", np.cos(arr))

## 配列の各要素の自然対数を求める
print("配列の自然対数: ", np.log(arr))

出力:

配列の平方根:  [1.         1.41421356 1.73205081 2.        ]
配列の指数関数:  [ 2.71828183  7.3890561  20.08553692 54.59815003]
配列のサイン:  [ 0.84147098  0.90929743  0.14112001 -0.7568025 ]
配列のコサイン:  [ 0.54030231 -0.41614684 -0.9899925  -0.65364362]
配列の自然対数:  [0.         0.69314718 1.09861229 1.38629436]

まとめ

おめでとうございます!これで、数学的演算、ブロードキャスト、ユニバーサル関数を含むNumPy配列操作について学ぶことができました。この知識を使えば、Pythonを使って幅広い数値計算タスクを実行できるようになりました。