[Python]配列(Array)で条件を満たす要素の個数を検索するには?

python

どうも、ちょげ(@chogetarou)です。

配列(Array)で条件を満たす要素の個数を検索する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

リスト(List)

リスト(List)で条件を満たす要素の個数を検索する方法は、2つあります。

sum() + 内包表記

1つは、sum()と内包表記を使う方法です。

まず、sum()を呼び出し、sum()の引数に[]を指定します。

そして、[]内でリスト(List)をforループします。

ループ処理に、検索で使う条件式を指定します。

result = sum([条件式 for i in list])

上記のsum()は、ループ処理に指定した条件式でリストを検索し、条件式でTrueを返す要素の個数を返します。

使用例

numbers = [1, 2, 3, 1, 4, 1, 6]

result1 = sum([i < 3 for i in numbers])
result2 = sum([i % 2 == 0 for i in numbers])
    
print(result1) #4
print(result2) #3

sum() + map()

もう1つは、sum()とmap()を使う方法です。

まず、sum()を呼び出します。

そして、sum()の引数でmap()を呼び出します。

map()の第1引数に条件式を返すラムダ式、第2引数にリスト(List)を指定します。

result = sum(map(lambda x: 条件式, list))

上記のsum()は、ラムダ式で返した条件式でリストを検索し、条件式でTrueを返す要素の個数を返します。

map()の第1引数に指定するラムダ式は、引数でリストの要素を取得します。

使用例

numbers = [1, 2, 3, 1, 4, 1, 6]

result1 = sum(map(lambda x: x > 2, numbers))
result2 = sum(map(lambda x: x % 2 != 0, numbers))
    
print(result1) #3
print(result2) #4

Array.array

Array.arrayで条件を満たす要素の個数を検索する方法は、2つあります。

sum() + 内包表記

1つは、sum()と内包表記を使う方法です。

まず、sum()を呼び出し、sum()の引数に[]を指定します。

そして、[]内でArray.arrayをforループします。

ループ処理に、検索で使う条件式を指定します。

result = sum([条件式 for i in array])

上記のsum()は、ループ処理に指定した条件式でarray.arrayを検索し、条件式でTrueを返す要素の個数を返します。

使用例

import array

numbers = array.array('i', [1, 2, 2, 3, 4, 1, 6])

result1 = sum([i < 3 for i in numbers])
result2 = sum([i % 2 != 0 for i in numbers])
    
print(result1) #4
print(result2) #3

sum() + map()

もう1つは、sum()とmap()を使う方法です。

まず、sum()を呼び出します。

そして、sum()の引数でmap()を呼び出します。

map()の第1引数に条件式を返すラムダ式、第2引数にArray.arrayを指定します。

result = sum(map(lambda x: 条件式, array))

上記のsum()は、ラムダ式で返した条件式でArray.arrayを検索し、条件式でTrueを返す要素の個数を返します。

map()の第1引数に指定するラムダ式は、引数でArray.arrayの要素を取得します。

使用例

import array

numbers = array.array('i', [1, 2, 2, 3, 4, 1, 6])

result1 = sum(map(lambda x: x == 1, numbers))
result2 = sum(map(lambda x: x % 2 != 0, numbers))
    
print(result1) #2
print(result2) #3

Numpy配列

Numpy配列で条件を満たす要素の個数を検索する方法は、3つあります。

numpy.count_nonzero()

1つ目は、numpy.count_nonzero()を使う方法です。

まず、numpy.count_nonzero()を呼び出します。

そして、numpy.count_nonzero()の引数に条件式を指定します。(条件式ではNumpy配列自体を比較する)

#条件式ではNumpy配列自体を比較する
result = np.count_nonzero(条件式)

上記のnumpy.count_nonzero()は、条件式で比較したNumpy配列を検索し、条件式でTrueとなる要素の個数を返します。

使用例

import numpy as np

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

result1 = np.count_nonzero(nums > 4)
result2 = np.count_nonzero(nums % 2 == 0)

print(result1) #5
print(result2) #4

sum()メソッド

2つ目は、sum()メソッドを使う方法です。

まず、Numpy配列自体を比較対象にした条件式を記述します。

そして、条件式の結果からsum()メソッドを呼び出します。

#条件式ではNumpy配列自体を比較する
result = (条件式).sum()

上記のsum()メソッドは、条件式で比較したNumpy配列を検索し、条件式でTrueとなる要素の個数を返します。

使用例

import numpy as np

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

result1 = (nums > 4).sum()
result2 = (nums % 2 == 0).sum()

print(result1) #5
print(result2) #4

numpy.sum()

3つ目は、numpy.sum()を使う方法です。

まず、Numpy配列自体を比較対象にした条件式を記述します。

そして、条件式の結果からsum()メソッドを呼び出します。

#条件式ではNumpy配列自体を比較する
result = (条件式).sum()

上記のsum()メソッドは、条件式で比較したNumpy配列を検索し、条件式でTrueとなる要素の個数を返します。

使用例

import numpy as np

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

result1 = (nums > 4).sum()
result2 = (nums % 2 == 0).sum()

print(result1) #5
print(result2) #4

まとめ

リスト(List)とArray.arrayで条件を満たす要素の個数を検索する方法は、次の2つです。

  • sum()と内包表記を使う方法
  • sum()とmap()を使う方法

Numpy配列(Array)で条件を満たす要素の個数を検索する方法は、次の3つです。

  • numpy.count_nonzero()を使う方法
  • sum()メソッドを使う方法
  • numpy.sum()を使う方法

コメント

タイトルとURLをコピーしました