0

lambda如果 x 等于零,我想使用将 x 加一的 a。我尝试了以下表达式:

t = map(lambda x: x+1 if x==0 else x, numpy.array())
t = map(lambda x: x==0 and x+1 or x, numpy.array())
t = numpy.apply_along_axis(lambda x: x+1 if x==0 else x, 0, numpy.array())

这些表达式中的每一个都返回以下错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我对map()and的理解numpy.apply_along_axis()是它需要一些函数并将其应用于数组的每个值。从错误看来,lambda 被评估为x=array,而不是数组中的某个值。我究竟做错了什么?

我知道我可以编写一个函数来完成此任务,但我想更加熟悉 python 的函数式编程方面。

4

1 回答 1

8

如果您使用的是 numpy,则应该编写矢量化代码:

arr + (arr == 0)
于 2012-11-23T23:03:38.107 回答