スポンサーリンク

numpy.where()のサンプルコード

1次元配列のサンプルコード

numpy.where()のサンプルコードになります。
条件に一致したインデックス取得、置換のサンプルを揃えてみました。

 $ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import numpy as np

#1次元でnumpy配列を生成
npArray = np.array([10, 11, 12,13, 14, 15,16, 17, 18])

print("1次元配列で、13より大きい要素のインデックスを出力")
print(np.where(npArray > 13))

print("1次元配列で、14より大きく、17未満となる要素のインデックスを出力")
print(np.where((npArray > 14) & (npArray < 17)))

print("1次元配列で、15以上の場合は1、それ以外は0に配列の要素を置換")
upNpArray = np.where(npArray >= 15, 1, 0)
print(upNpArray)

print("1次元配列で、15以上の場合は1に配列の要素を置換、それ以外は元の配列のままにする")
upNpArray = np.where(npArray >= 15, 1, npArray)
print(upNpArray)

print("1次元配列で、15以上の場合は元の配列のままとし、それ以外は0に配列の要素を置換")
upNpArray = np.where(npArray >= 15, npArray, 0)
print(upNpArray)

下記が実行結果になります。
 $ ./sample.py 
1次元配列で、13より大きい要素のインデックスを出力
(array([4, 5, 6, 7, 8]),)
1次元配列で、14より大きく、17未満となる要素のインデックスを出力
(array([5, 6]),)
1次元配列で、15以上の場合は1、それ以外は0に配列の要素を置換
[0 0 0 0 0 1 1 1 1]
1次元配列で、15以上の場合は1に配列の要素を置換、それ以外は元の配列のままにする
[10 11 12 13 14  1  1  1  1]
1次元配列で、15以上の場合は元の配列のままとし、それ以外は0に配列の要素を置換
[ 0  0  0  0  0 15 16 17 18]

スポンサーリンク

2次元配列のサンプルコード

下記が2次元配列の場合のサンプルコードになります。

 $ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import numpy as np

#2次元でnumpy配列を生成
npArray = np.array(
			[[10, 11, 12],
			 [13, 14, 15],
			 [16, 17, 18]])

print("2次元配列で、14より大きい要素のインデックスを出力")
print(np.where(npArray > 14))

print("2次元配列で、14より大きく、17未満となる要素のインデックスを出力")
print(np.where((npArray > 14) & (npArray < 17)))

print("2次元配列で、15以上の場合は1、それ以外は0に配列の要素を置換")
upNpArray = np.where(npArray >= 15, 1, 0)
print(upNpArray)

print("2次元配列で、15以上の場合は1に配列の要素を置換、それ以外は元の配列のままにする")
upNpArray = np.where(npArray >= 15, 1, npArray)
print(upNpArray)

print("2次元配列で、15以上の場合は元の配列のままとし、それ以外は0に配列の要素を置換")
upNpArray = np.where(npArray >= 15, npArray, 0)
print(upNpArray)

下記が実行結果になります。
 $ ./sample.py 
2次元配列で、14より大きい要素のインデックスを出力
(array([1, 2, 2, 2]), array([2, 0, 1, 2]))
2次元配列で、14より大きく、17未満となる要素のインデックスを出力
(array([1, 2]), array([2, 0]))
2次元配列で、15以上の場合は1、それ以外は0に配列の要素を置換
[[0 0 0]
 [0 0 1]
 [1 1 1]]
2次元配列で、15以上の場合は1に配列の要素を置換、それ以外は元の配列のままにする
[[10 11 12]
 [13 14  1]
 [ 1  1  1]]
2次元配列で、15以上の場合は元の配列のままとし、それ以外は0に配列の要素を置換
[[ 0  0  0]
 [ 0  0 15]
 [16 17 18]]
 

スポンサーリンク

numpy.all()とnumpy.any()のサンプルコード

numpy.all()とnumpy.any()のサンプルコードになります。

 $ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import numpy as np

#2次元でnumpy配列を生成
npArray = np.array(
			[[20, 21, 22],
			 [23, 24, 25],
			 [26, 27, 28]])

print("配列の全ての要素が24より大きければTrue、それ以外はFalseを返す")
print(np.all(npArray > 24))

print("配列の全ての要素が0より大きく30未満であればTrue、それ以外はFalseを返す")
print(np.all((npArray > 0) & (npArray < 30)))

print("配列の要素の中で、24より大きい要素が1つ以上あればTrue、それ以外はFalseを返す")
print(np.any(npArray > 24))

print("配列の要素の中で、28より大きく30未満の要素が1つ以上あればTrue、それ以外はFalseを返す")
print(np.all((npArray > 28) & (npArray < 30)))

下記が実行結果になります。
 $ ./sample.py 
配列の全ての要素が24より大きければTrue、それ以外はFalseを返す
False
配列の全ての要素が0より大きく30未満であればTrue、それ以外はFalseを返す
True
配列の要素の中で、24より大きい要素が1つ以上あればTrue、それ以外はFalseを返す
True
配列の要素の中で、28より大きく30未満の要素が1つ以上あればTrue、それ以外はFalseを返す
False

スポンサーリンク