如果x等于零,我想使用lambda
将x加1。我尝试了以下表达式:
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()
和numpy.apply_along_axis()
的理解是,它需要一些功能并将其应用于数组的每个值。从错误看,似乎lambda被评估为x=array
,而不是数组中的某个值。我做错了什么?
我知道我可以编写一个函数来完成这个,但我想更熟悉python的函数编程方面。
答案 0 :(得分:8)
如果您正在使用numpy,那么您应该编写矢量化代码:
arr + (arr == 0)