代码之家  ›  专栏  ›  技术社区  ›  D A MaxNoe

Python Numpy外部产品将函数列表应用于参数列表,而不使用For循环

  •  0
  • D A MaxNoe  · 技术社区  · 5 年前

    我有一个数字数组和一个函数列表。

    我想在每个数字上运行每个函数,以得到一个矩阵。

    有没有一种方法可以不用运行缓慢的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)
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   quantummind    5 年前

    您可以使用列表理解并将其转换回numpy数组,如下所示:

    results3 = numpy.array([ fn(arr) for fn in fns])