如果我定义以下函数:
def f(x):
if x<1.:
return 0.
else:
return x
然后我尝试将其应用于数组(以使另一个数组作为输出)
import numpy as np
X=np.linspace(0.,2.,100)
print f(X)
它返回以下错误:
ValueError: The truth value of an array with
more than one element is ambiguous. Use a.any() or a.all()
我当然可以通过将函数分别应用于数组的每个组件来解决问题,但这似乎不是最有效的方法。 定义功能的正确方法是什么?
答案 0 :(得分:2)
使用map将该功能应用于列表的每个项目
print(list(map(f, X)))
您还可以在地图本身内部将函数定义为lambda函数
print(list(map(lambda x: 0. if x<1. else x, X)))
或者仅使用numpy遮罩选择x<1.
处的索引并将其设置为0.
X[X<1.] = 0.