为什么“a 或 b 或 c”不适用于 NumPy 数组?

ber*_*ers 2 python

我想分配给d无论是a或,如果aNoneb或者,如果b是也Nonec。这有效:

a = b = c = np.array([1])
d = a or b or c
Run Code Online (Sandbox Code Playgroud)

但是,这不会:

a = b = c = np.array([1, 2])
d = a or b or c
Run Code Online (Sandbox Code Playgroud)

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

显然,或者正在逐元素地用于具有多个元素的数组。我可以做什么来实现

d = a or b or c
Run Code Online (Sandbox Code Playgroud)

使用 NumPy 数组?

L3v*_*han 6

我想分配给d无论是a或,如果aNoneb或者,如果b是也Nonec

然后逐字检查None

d = a if a is not None else b if b is not None else c
Run Code Online (Sandbox Code Playgroud)

您的版本适用于单元素数组的事实是它们真实性的副作用。它不会像你期望的那样做:

a = np.array([0])
b = "wat"

c = a or b
Run Code Online (Sandbox Code Playgroud)

c现在会"wat",即使a不是None