あるデータセットの各データが、データベースのデータ各列の上限下限の範囲内に入っているかどうかを判定し、範囲外のものはインデックスを返す関数を作りたいと考えています。実際に自作して動作はするのですが、for文を多用しているせいか動作が非常に重く、どうにかしたいと思っています。
どうすれば高速で処理できるのか、どなたかご教示いただけないでしょうか?
案1
def _judge(x1, x2): ### x1:データベースのデータ, x2:判定するデータセット err_idx=[] for k in range(len(x2)): for i in range(x1.shape[1]): if x1.min(axis=0)[i] > x2[k,i] or x2[k,i] > x1.max(axis=0)[i]: err_idx.append(k) break return sorted(list(set(err_idx)))
案2
def _judge(x1, x2): ### x1:データベースのデータ, x2:判定するデータセット data_max=x1.max(axis=0) data_min=x1.min(axis=0) err_idx=[k for k in range(len(x2)) for i in range(x1.shape[1]) if data_min[i] > x2[k,i] or x2[k,i] > data_max[i]] return sorted(list(set(err_idx)))
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/24 23:59