使用numpy fromfunction

Ofe*_*Ron 4 python lambda numpy

我试图使用fromfunction创建一个高斯值为mu = 3和sig = 2的5x5矩阵,这是我的尝试:

from random import gauss
import numpy as np
np.fromfunction(lambda i,j: gauss(3,2), (5, 5))
Run Code Online (Sandbox Code Playgroud)

结果如下:5.365244570434782

正如我从文档中理解的那应该有效,但我得到的是标量而不是5x5矩阵...为什么?以及如何解决这个问题?

use*_*ica 12

这些numpy.fromfunction文档极具误导性.而不是重复调用你的函数并从结果中构建一个数组,fromfunction实际上只调用你传递它的函数.在那一次调用中,它将许多索引数组传递给您的函数,而不是单个索引.

剥离文档字符串,实现如下:

def fromfunction(function, shape, **kwargs):
    dtype = kwargs.pop('dtype', float)
    args = indices(shape, dtype=dtype)
    return function(*args,**kwargs)
Run Code Online (Sandbox Code Playgroud)

这意味着除非您的功能广播,否则numpy.fromfunction不会像文档所说的那样做任何事情.

  • @OfekRon:我不会.我使用[`numpy.random.normal`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.normal.html)而不是`random.gauss`. (2认同)
  • @OfekRon那是因为python的`random`模块与numpy的`random`模块不同. (2认同)