我试图使用this函数创建一个具有mu=3和sig=2的高斯值的5x5矩阵,这是我的尝试:
from random import gauss
import numpy as np
np.fromfunction(lambda i,j: gauss(3,2), (5, 5))结果是: 5.365244570434782
正如我从文档中了解到的,这应该是可行的,但是我得到的是一个标量,而不是5x5矩阵.为什么?以及如何解决这个问题?
发布于 2016-11-18 08:31:03
numpy.fromfunction文档具有极大的误导性。fromfunction实际上只对传递给它的函数进行了一次调用,而不是重复调用函数并根据结果构建数组。在这一调用中,它将许多索引数组传递给函数,而不是单个索引。
去掉docstring后,实现如下:
def fromfunction(function, shape, **kwargs):
dtype = kwargs.pop('dtype', float)
args = indices(shape, dtype=dtype)
return function(*args,**kwargs)这意味着除非您的函数广播,否则numpy.fromfunction不会像文档所说的那样执行任何操作。
发布于 2020-04-24 07:41:54
我知道这是一篇老文章,但是对于那些偶然发现的人来说,它不起作用的原因是,lambda中的表达式没有使用i, j变量
你需要什么?你能这样做吗?
np.zeros((5, 5)) + gauss(3, 2)https://stackoverflow.com/questions/40672367
复制相似问题