我有一个数字数组和一个函数列表。
我想在每个数字上运行每个函数,以得到一个矩阵。
有没有一种方法可以不用运行缓慢的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)
也许一些内置的外部产品很难与谷歌互动?
results3 = numpy.function_outer( fns, arr)