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

时间:2019-12-13 14:00:34

标签: python

我想将d分配给a,或者如果aNone,则分配b,或者如果b也分配给None ca = b = c = np.array([1]) d = a or b or c 。这有效:

a = b = c = np.array([1, 2])
d = a or b or c

但是,这不是:

d = a or b or c
  

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

显然,或者对于具有多个元素的数组,按元素使用。我该怎么做

<td rowspan="31" style="background-color:Transparent;min-width: 19.14mm;WIDTH:21.26mm;" class="Ac165936899664594908cfec8fa25b2a0270c" height="548"><div style="word-wrap:break-word;white-space:pre-wrap;" class="Ac165936899664594908cfec8fa25b2a0270"> XXXXX </div></td>

带有NumPy数组?

1 个答案:

答案 0 :(得分:6)

  

我想将d分配给a,或者如果aNone,则分配b,或者如果b也分配给None cNone

然后从字面上检查d = a if a is not None else b if b is not None else c

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

c = a or b

您的版本适用于单元素数组的事实是其真实性的副作用。它不会满足您的期望:

c

"wat"现在将是a,即使None不是gst-launch-1.0 -e rtspsrc location=rtsp_url1 ! rtph264depay ! h264parse ! decodebin ! videoconvert ! m.sink_0 \ rtspsrc location=rtsp_url2 ! rtph264depay ! h264parse ! decodebin ! videoconvert ! m.sink_1 \ rtspsrc location=rtsp_url3 ! rtph264depay ! h264parse ! decodebin ! videoconvert ! m.sink_2 \ rtspsrc location=rtsp_url4 ! rtph264depay ! h264parse ! decodebin ! videoconvert ! m.sink_3 \ videomixer name=m sink_1::xpos=1280 sink_2::ypos=720 sink_3::xpos=1280 sink_3::ypos=720 ! x264enc ! mp4mux ! filesink location=./out.mp4 sync=true