python - 用于用户功能的 numpy 广播
问题描述
在numpy
中,如果a
是一个 ndarray,那么,类似于
np.sin(a)
获取sin
ndarray 的所有条目。如果我需要f(x) = sin(x) if x<1 else cos(x)
用广播行为定义我自己的函数(举个愚蠢的例子)怎么办?
解决方案
您可以定义自己的函数f = lambda x: sin(x) if x<1 else cos(x)
,然后使用 numpy 的内置 vectorizer f_broadcasting = np.vectorize(f)
。
这并没有提供任何速度改进(并且额外的开销可以减缓小问题),但它为您提供了所需的广播行为。
推荐阅读
- amcharts4 - 如何在 AMCharts 4 中以编程方式突出显示列?
- django - Django-tables2 - 渲染中的 self.request
- c# - 使用servicestack ormlite通过c#插入数据库时浮点值发生变化
- python-3.x - 地图中的地带返回地带
- javascript - 如何通过 DevTools 访问 Electron 应用程序中的“electron.remote.app”?
- javascript - 如何为两个 redux 操作创建 async/await 结构?
- java - 如何实施 checkstyle 来进行 spock 测试?
- javascript - 在文本框的更改事件中调用我的 javascript 函数
- php - Laravel 用户策略返回的是经过身份验证的用户信息,而不是外部用户
- ionic-framework - 离子键盘未正确打开