我希望你能提供一种优化或简洁的方法来检查数组的所有元素是否具有相同的符号(严格要求)。
我一直在思考:
N.all(my_array*my_array[0]>0)
它会检查所有元素是否与第一个元素具有相同的符号,因此具有相同的符号,但并不显得可爱或优雅。
看起来把整个数组都乘起来有点浪费。我觉得只需要查看第一个元素的符号,然后使用就好了:
N.all(my_array > 0) if my_array[0] > 0 else N.all(my_array < 0)
试试这个:
len(N.unique(N.sign(a)))==1
numpy.sign
是O(N)
,numpy.unique
也是如此,因此这是一个O(N^2)
的解决方案。@RemcoGerlich的解决方案是O(N)
。 - Cory KramerO(2N)
的解决方案,而不是O(N)
。 - Cory Kramer
numpy.sign
,它们考虑了{-1, 0, 1}
。 - Cory Kramernumba
、cython
或weave
。 - Michael