このnumpy
配列がある場合:
>>> a
array([[ 1, 2, 3],
[ 4, 4, 6],
[ 4, 10, 9]])
少なくともN
多くの要素で条件が成立するすべての行を選択する最速の方法は何ですか?
たとえば、少なくとも 2 つの数値が 2 で割り切れるすべての行を選択します。
私が思いついた解決策は次のとおりです。
@ find rows where 2 or more elements are evenly divisible by two
N = 2
a[where(array(map(lambda x: sum(x), a % 2 == 0)) >= N)]
使用する代替ソリューションapply_along_axis
は次のとおりです。
a[where(sum(numpy.apply_along_axis(lambda x: x % 2 == 0, 1, a), axis=1) >= 2)]
numpy/scipy でこれらよりもエレガントで高速な方法はありますか? そうでない場合、上記の 2 つのうちどちらが最適ですか?