python - Python Numpy 外部产品将函数列表应用于没有 For 循环的参数列表
问题描述
我有一个数字数组和一个函数列表。
我想对每个数字运行每个函数以获取矩阵。
有没有办法在没有慢速 python 循环/映射的情况下做到这一点?
import numpy
arr = numpy.array([1,2,3,4,5])
fns = [numpy.sin, numpy.cos, numpy.exp]
results = numpy.zeros(shape=( len(fns), len(arr) ))
for i, fn in enumerate(fns):
for j, val in enumerate(arr):
results[i][j] = fn(val)
print ('results', results)
我可以通过函数广播摆脱一个循环:
results2 = numpy.zeros(shape=( len(fns), len(arr) ))
for i, fn in enumerate(fns):
results2[i] = fn(arr)
print ('results2', results2)
有没有一些聪明的 pythonic numpy-ish 方法来摆脱我的第二个循环?
也许有些内置的外部产品交互很难用谷歌搜索?
results3 = numpy.function_outer( fns, arr)
解决方案
您可以使用列表推导并将其转换回 numpy 数组,如下所示:
results3 = numpy.array([ fn(arr) for fn in fns])
推荐阅读
- python - 使用 Pandas 从不同 Excel 工作表中的一行中获取某个字符串
- c# - 在 Autofac 中注册时如何避免使用 new 两次
- powershell - 尝试使用 Powershell 同时在多个文件中搜索包含空格的多个字符串
- javascript - 在反应 componentDidUpdate 不更新状态
- google-compute-engine - 如何将多个传出 IP 地址分配给 GCE 上的单个实例?
- python - 测试和训练之间的 Keras 差异
- javascript - 选择搜索结果后清除文本框字母值
- java - 可比 VS
- reactjs - 使用 Karma、Mocha 和 React 16.5 诊断重复的规范报告
- python - python warnings.filterwarnings 不会忽略“import sklearn.ensemble”中的 DeprecationWarning