NumPy のスライシングとインデックス付け

PythonPythonBeginner
今すぐ練習

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

はじめに

NumPyは、科学的計算に使用される人気のあるPythonライブラリです。数値データの分析に役立つ高性能な配列演算と数学関数を提供します。この実験では、NumPyのスライシングとインデックス付けの機能を学びます。

配列のスライシング

スライシングとは、インデックスの範囲を指定することで配列のサブセットを抽出するプロセスです。NumPy配列は、コロン : 演算子を使用してスライシングできます。

Pythonシェルを開く

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

python3

NumPyをインポートする

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

import numpy as np

1次元の配列をスライシングする

## 1次元配列を作成する
a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

## インデックス2からインデックス5までの配列をスライシングする
print(a[2:5])

出力:

[2 3 4]

多次元の配列をスライシングする

多次元の配列もスライシングできます。

## 2次元配列を作成する
b = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])

## 最初の2行と最初の2列をスライシングする
print(b[:2, :2])

出力:

[[0 1]
 [3 4]]

ブール型配列を使ったインデックス付け

ブール型インデックス付けは、条件に基づいて配列をフィルタリングする強力な機能です。既存の配列に論理演算子を適用することで、ブール型配列を作成できます。

1次元配列を作成する

c = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

条件 (c > 5) に基づいてブール型配列を作成する

mask = c > 5
print(mask)

出力:

[False False False False False False  True  True  True  True]

ブール型配列を使って元の配列をフィルタリングする

print(c[mask])

出力:

[6 7 8 9]

ファンシーインデックス付け

ファンシーインデックス付けは、インデックスの配列を使って配列をインデックス付けする方法です。この手法を使って、配列の特定の要素やサブセットを抽出できます。

## 1次元配列を作成する
d = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

## インデックスの配列を作成する
indices = np.array([1, 3, 5])

## ファンシーインデックス付けを使って指定されたインデックスの要素を抽出する
print(d[indices])

出力:

[1 3 5]
  • また、ファンシーインデックス付けを使って、配列の特定の要素に値を割り当てることもできます。
## 1次元配列を作成する
e = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

## インデックスの配列を作成する
indices = np.array([1, 3, 5])

## 指定されたインデックスの要素に値10を割り当てる
e[indices] = 10
print(e)

出力:

[ 0 10  2 10  4 10  6  7  8  9]

まとめ

おめでとうございます!あなたはNumPyのスライシングとインデックス付けの実験を完了しました。

この実験では、NumPy配列のスライシングとインデックス付けの基本を学びました。

  • スライシングにより、インデックスの範囲を指定することで配列のサブセットを抽出できます。
  • ブール型インデックス付けにより、条件に基づいて配列をフィルタリングできます。
  • ファンシーインデックス付けにより、インデックスの配列を使って配列の特定の要素やサブセットを抽出できます。