我不太确定为什么这不起作用。任何解释都是高度赞赏的。将一个函数映射到np。数组:
test = np.array([0.6,0.7,1,0,0.5,0.2,0.4,0.3])
decision_boundary=0.6
decision_func = lambda x: 1. if (x >= decision_boundary) else 0.
decision_func(test)
将导致以下值错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
您没有将函数应用于数组的每个元素。你将函数应用到整个数组,numpy正确地告诉你,你不能将numpy数组转换为布尔值,作为if
的条件。幸运的是,在您的情况下,>=
已经在numpy数组上进行了矢量化,因此您只需执行
x >= decision_boundary
或者如果你真的想要1和0,
1 * (x >= decision_boundary)
一般来说,如果你有一个没有矢量化的函数,你可以用numpy函数vectorize
来实现。