首页 > 解决方案 > 用于用户功能的 numpy 广播

问题描述

numpy中,如果a是一个 ndarray,那么,类似于 np.sin(a)获取sinndarray 的所有条目。如果我需要f(x) = sin(x) if x<1 else cos(x)用广播行为定义我自己的函数(举个愚蠢的例子)怎么办?

标签: pythonpython-3.xnumpy

解决方案


您可以定义自己的函数f = lambda x: sin(x) if x<1 else cos(x),然后使用 numpy 的内置 vectorizer f_broadcasting = np.vectorize(f)

这并没有提供任何速度改进(并且额外的开销可以减缓小问题),但它为您提供了所需的广播行为。


推荐阅读