【发布时间】:2019-02-11 11:12:15
【问题描述】:
为什么这个函数返回浮点数?
func = lambda x: 1.
x = np.linspace(0,1,10)
func(x).shape
结果是
AttributeError: 'float' object has no attribute 'shape'
我期望以下行为:
func = lambda x: 1. + 0*x
x = np.linspace(0,1,10)
func(x)
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
如何在不弄乱 lambda 函数的情况下获得预期的结果(即无需编写 func = lambda x: 1. + 0*x)?
背后的想法是用户将此函数传递给另一个函数以在网格上进行进一步评估。我不能指望用户将常量函数设为1 + 0*x。我应该怎么办?
【问题讨论】:
-
这个 lambda 函数总是返回
1.,它是一个float,并且一个浮点数没有形状...请注意,该函数正在接收x,但没有对它做任何事情.另外你的预期输出是什么? -
Numpy.linspace返回一个数组(一个ndarray),你需要定义一个对这样一个数组进行操作的函数。 -
你可能在看
np.full(10,1.)docs.scipy.org/doc/numpy-1.15.1/reference/generated/…
标签: python numpy lambda vectorization