Python 使按案例区分的代码适用于数组和数字

Python 使按案例区分的代码适用于数组和数字,python,numpy,Python,Numpy,我经常发现自己编写的代码应该适用于单个数字和numpy数组。如果代码需要区分大小写,我要么使用一些奇怪的构造,比如添加多个numpy.sign或类似的,要么自己编写类似的块 try: lon[x<0] -= pi except IndexError: if x<0: lon -= pi 试试看: lon[x如果速度不是问题,您可以: lon -= (x<0)*pi lon-=(x另一个选项是使用nump

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

    try:
        lon[x<0] -= pi
    except IndexError:
        if x<0:
            lon -= pi
试试看:

lon[x如果速度不是问题,您可以:

lon -= (x<0)*pi

lon-=(x另一个选项是使用
numpy。其中
同时支持数组和标量:

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

lon-=np。其中(xI主要不关心速度,但有时我在这些结构中有乘法,
y*=(xf对于乘法,您可以执行
y*=2**(X<0)