如果我有这个numpy
数组:
>>> a
array([[ 1, 2, 3],
[ 4, 4, 6],
[ 4, 10, 9]])
从其中选择条件至少对N
许多元素成立的所有行的最快方法是什么?
例如,选择至少两个数字可以被 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 中是否有比这些更优雅/更快的方式?如果不是,以上两个哪个最好?