通过用于数组和数字的案例来区分代码

时间:2014-01-25 19:00:12

标签: python numpy

我经常发现自己编写的代码应该适用于单个数字和numpy数组。如果该代码需要区分大小写,我要么使用一些奇怪的结构,比如添加numpy.sign或类似的多个,或者我发现自己编写像

这样的块
    try:
        lon[x<0] -= pi
    except IndexError:
        if x<0:
            lon -= pi

是否有一种简单的惯用方法来编写lon[x<0] -= pi之类的语句,以便它们适用于数字和数组?

2 个答案:

答案 0 :(得分:1)

如果速度不是问题,您可以这样做:

lon -= (x<0)*pi

总能给出正确的答案,但在数组的情况下,完成的减法(按0)比需要的多。

答案 1 :(得分:1)

另一种选择是使用支持数组和标量的numpy.where

lon -= np.where(x<0, pi, 0.)