やりたいこと
numpyの1次元配列 x
の内、v_min
以上 v_max
以下の要素だけを抽出した1次元配列 y
と、対応するインデックスの1次元配列 indices
を得たいとします。
>>> x array([0.20204346, 0.71742434, 0.05195665, 0.50794105, 0.08809835, 0.80818671, 0.20618913, 0.60163578, 0.55757078, 0.74752494]) >>> v_min, v_max = 0.2, 0.8 ... >>> y array([0.20204346, 0.71742434, 0.50794105, 0.20618913, 0.60163578, 0.55757078, 0.74752494]) >>> indices array([0, 1, 3, 6, 7, 8, 9], dtype=int64)
解決方法
np.where()
と np.logical_and()
を使います。
>>> y = x[np.logical_and(x>v_min, x<v_max)] >>> y array([0.20204346, 0.71742434, 0.50794105, 0.20618913, 0.60163578, 0.55757078, 0.74752494]) >>> indices = np.where(np.logical_and(x>v_min, x<v_max))[0] >>> indices array([0, 1, 3, 6, 7, 8, 9], dtype=int64)