レッスン1 / 1問目

『all()とany()』

このレッスンでは真偽値の判定を行うnp.all()とnp.any()について学習していきましょう。

それぞれの機能は以下の通りとなります。

関数説明
np.all()要素が全てTrueの場合にTrueを返す
np.any()要素のいづれかがTrueの場合にTrueを返す

ではこれらについて順番に見ていきましょう。

np.all()

まずはnp.all()から見ていきます。
np.all()は引数に指定した配列の要素が全てTrueの場合にTrueを返す関数です。

  1. arr1 = np.array([True, False, False])
  2. arr2 = np.array([True, True, True])
  3. print(np.all(arr1))
  4. print(np.all(arr2))
False True    # 要素が全てTrueの場合Trueを返す

上記arr2は要素が全てTrueであるためTrueが返されました。


次は数値の配列に対してnp.all()を使用する例を見ていきましょう。以下のようにnp.all()の引数に条件式を指定します。

  1. arr = np.array([1, 2, 3, 4, 5, 6])
  2. print(np.all(arr <= 7))    # 要素が全て7以上の場合
  3. print(np.all(arr >= 3))    # 要素が全て3以上の場合
True False

上記のように、np.all()の引数に指定した条件式が全てTrueの場合にTrueが返されます。


また、以下は引数に配列のみを指定した例ですが、配列要素が0以外の場合はTrueを返し、配列要素に0がある場合はFalseとなります。

  1. arr1 = np.array([1, 2, 3])
  2. arr2 = np.array([1, 2, 3, 0])
  3. print(np.all(arr1))
  4. print(np.all(arr2))
True    # 配列要素が全て0以外であるためTrueとなる False    # 配列内に0があるためFalseとなる

np.any()

では次はnp.any()について見ていきましょう。
np.any()は配列内のいづれかの要素がTrueの場合にTrueを返す関数です。

使い方に関してはnp.all()と同じです。以下のようにnp.any()の引数に配列を渡します。

  1. arr1 = np.array([True, False, False])
  2. arr2 = np.array([False, False, False])
  3. print(np.any(arr1))
  4. print(np.any(arr2))
True    # 要素内のいづれかがTrueの場合Trueを返す False    # 要素全てFalseであるためFalseとなる

上記のarr1では配列内にTrueが一つ含まれているためnp.any()がTrueを返しています。


では次は数値の配列に対してnp.any()を使用する例を見ていきましょう。

  1. arr = np.array([1, 2, 3, 4, 5, 6])
  2. print(np.any(arr > 6))    # 6より大きい値の有無
  3. print(np.any(arr > 3))    # 3より大きい値の有無
  4. print(np.any(arr < 2))    # 2より小さい値の有無
False True True

np.any()は引数に指定した配列の要素が一つでも条件式に該当した場合にTrueを返します。

軸の指定

np.all()とnp.any()はともに軸を指定することができます。

以下のようにaxisで指定します。

  1. arr = np.array([
  2.        [1, 0, 1],
  3.        [1, 1, 1],
  4.        [1, 0, 0]
  5. ])
  6. print(np.all(arr, axis=0))    # 縦方向
  7. print(np.all(arr, axis=1))    # 横方向
[ True False False ]    # 縦方向 [False True False]    # 横方向

軸を指定する方法に関しては他の関数で軸を指定する場合と同じです。
以下の図のように0を指定した場合は縦方向、1を指定した場合は横方向となります。

np.all()による軸の指定

まとめ

このレッスンでは真偽値を判定するnp.all()とnp.any()について学習しました。np.all()とnp.any()はよく使う関数ですのでここでしっかりと使い方を押さえておきましょう。

また、Pythonの組み込み関数にもany()とall()がありますが、これらはNumPyの多次元配列では動作しませんので注意しましょう。。

では以下にこのレッスンの内容をまとめます。

  • np.all()はすべての要素がTrueの場合にTrueを返す
  • np.any()は要素のいづれかがTrueの場合にTrueを返す
  • 引数に条件式を指定することができる
  • 軸も指定可能

ではレッスンは以上となります。演習課題にチャレンジしましょう。

Lesson1

配列arrの要素が全て3以上の場合にTrueを返す関数をprint()の中に記述してください。

Lesson2

配列arrの要素が全て5より大きい場合にTrueを返す関数をprint()の中に記述してください。

Lesson3

配列arrの要素に7以上が含まれている場合にTrueを返す関数をprint()の中に記述してください。

Last updated:2019/11/2

True
False
True
  1. import numpy as np

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

  3. # 1. arrの要素が全て3以上の場合

  4. print(np.any(arr >= 3))

  5. # 2. arrの要素の全てが5より大きい場合

  6. print(np.all(arr > 5))

  7. # 2. arrの要素に7以上が含まれている場合

  8. print(np.any(arr >= 7))
main.py
設定
g
n
i
d
a
o
L