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
