【发布时间】:2018-11-15 00:11:18
【问题描述】:
这段代码有什么问题:
将 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()
【问题讨论】:
-
您希望
np.array([[-0.5, 0.2, 0.0], [4.2, 3.14, -2.7]]) < 0的答案是什么? Python 不知道如何处理这种比较。 -
尝试比较
A < 0。这是没有意义的。我想你想要B = [assign(a) for a in x for x in A]之类的东西。 -
A<0生成一个与A大小相同的布尔数组。 Pythonif仅适用于标量布尔 True/False。这是一个简单的非此即彼的行动。它不能与多个布尔值一起使用。 -
谢谢。我使用剪辑和 np.sign() 实现
-
注意,lambda 函数并不真正相关。在任何情况下,如果您要将匿名函数分配给一个名称,您应该只使用常规函数定义。