本文へスキップ
BecomeCoder

Pythonデータ分析コース · 第2章 numpy ― 配列で計算する · レッスン8

2次元配列と条件抽出

ブラウザで完結

導入

表のようなデータは、行と列を持つ2次元配列で表せます。また「条件に合う要素だけ取り出す」操作は、分析で頻繁に使います。

説明

リストのリストを渡すと2次元配列になります。.reshape() で形を変えることもできます。

import numpy as np

m = np.array([[1, 2, 3],
              [4, 5, 6]])
print(m)
print("形:", m.shape)       # (2, 3) = 2行3列
print("列ごとの合計:", m.sum(axis=0))  # 縦方向
print("行ごとの合計:", m.sum(axis=1))  # 横方向

axis=0 は「縦方向(列ごと)」、axis=1 は「横方向(行ごと)」の集計です。どちらに潰すか、と覚えると分かりやすいです。

配列に条件を書くと、各要素が条件を満たすかの True/False 配列が返ります。それを [] に入れると、条件に合う要素だけが取り出せます。

import numpy as np

data = np.array([15, 42, 8, 23, 4, 16])
print(data > 20)          # 各要素が20より大きいか
print(data[data > 20])    # 20より大きい要素だけ
print("20超の個数:", (data > 20).sum())  # Trueの数を数える

(data > 20).sum() は、True を 1 として数えるので「条件を満たす個数」になります。よく使うテクニックです。

やってみよう

data[data < 10] で10未満の要素だけを取り出しましょう。条件を data % 2 == 0(偶数)に変えると、偶数だけ取り出せます。

演習

np.array([3, 18, 25, 7, 40, 12]) から、20以上の要素だけを取り出して表示してください。

ヒント1を見る

data[data >= 20] と書きます。

実際に動かしてみよう

下のエディタにPythonを書いて「実行」を押すと、numpy・pandas・matplotlib が使える本物のPython(Pyodide)で出力とグラフが表示されます。初回だけ読み込みに少し時間がかかります。本文の例をそのまま試したり、書き換えたりしてみましょう(グラフ内の文字は日本語だと表示が崩れるため英字で書きます)。

Python — ライブラリ付きで実行(Pyodide)

numpy / pandas / matplotlib が使える本物のPython(Pyodide)を読み込みます。初回のみ読み込みに少し時間がかかります(以降はブラウザにキャッシュされます)。
スクロールして表示された時点でも自動で読み込まれます。