包含应用于数组的真值检查的函数将返回错误

时间:2019-07-17 17:34:48

标签: python function numpy

如果我定义以下函数:

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()

我当然可以通过将函数分别应用于数组的每个组件来解决问题,但这似乎不是最有效的方法。 定义功能的正确方法是什么?

1 个答案:

答案 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.