在numpy
中,如果a
是一个ndarray,则类似
np.sin(a)
占ndarray所有条目的sin
。如果我需要定义自己的具有广播行为的函数(对于一个愚蠢的例子,f(x) = sin(x) if x<1 else cos(x)
)怎么办?
答案 0 :(得分:2)
您可以定义自己的函数f = lambda x: sin(x) if x<1 else cos(x)
,然后使用numpy的内置矢量化器f_broadcasting = np.vectorize(f)
。
这不会提高任何速度(并且额外的开销可能会减慢小问题),但是它为您提供了所需的广播行为。
答案 1 :(得分:2)