我有一个数字数组和一个函数列表。
我想对每个数字运行每个函数以获取矩阵。
有没有一种方法可以在不使用缓慢的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)