此代码有什么问题:

将numpy导入为np

A = np.array([[-0.5, 0.2, 0.0],
          [4.2, 3.14, -2.7]])

asign = lambda t: 0 if t<0 else 1
asign(A)
print(A)


预期:

     [[0.  1.  0.]
      [ 1.  1. 0.]]


ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()

最佳答案

好吧,lambda本身不会遍历整个数组。为此,您将需要一个更高阶的函数。在这种情况下:地图。

A = np.array([[-0.5, 0.2, 0.0],
              [4.2, 3.14, -2.7]])

asign = lambda t: 0 if t<0 else 1
A = list(map(asign, A))


Map将遍历每个元素,并将其传递给函数。
我将地图包装在一个列表中,因为它返回一个类型为filter的对象,但是您可以通过这种方式进行转换。

关于python - numpy数组上的lambda函数。这段代码有什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53310656/

10-16 22:14