【发布时间】:2021-12-20 15:43:35
【问题描述】:
从这两个 lambda 函数开始
import numpy as np
relu = (lambda x: np.maximum(0, x),
lambda x: 1 if x > 0 else 0)
显然,当我传递一个数字时,这两个函数可以正常工作,但是当我传递一个数组/列表时,relu[0] 有效,但 relu[1] 无效。
a = [1, 2, 3, 4]
print(relu[0](a)) # this one works
print(relu[1](a)) # not works
print([relu[1](v) for v in a]) # also works
【问题讨论】:
-
因为
relu[0]调用了一个接受向量的numpy 函数,而relu[1]是一个不接受向量的普通Python 表达式。 -
错误信息是什么?它会很清楚为什么这不起作用。
-
你能澄清你到底在问什么吗?你可以传入一个numpy数组就好了。你不能做的是对 numpy 数组执行一个对 numpy 数组没有意义的操作(测试它是否大于 0)——就像你不能对 任何其他值 执行操作一样操作定义不明确(例如测试
dict是否大于0)。
标签: python arrays function numpy lambda