2024-05-13 08:44:46 发布
网友
我想对二维numpy阵列执行切片:
type1_c = type1_c[ (type1_c[:,10]==2) or (type1_c[:,10]==3) or (type1_c[:,10]==4) or (type1_c[:,10]==5) or (type1_c[:,10]==6) ]
语法看起来是正确的;但是我收到了以下错误消息: '具有多个元素的数组的真值不明确。使用a.any()或a.all()'
我真的不明白怎么回事。有什么想法吗?在
当它在两个标量之间时,or是明确的,但是正确的向量泛化是什么呢?如果{}和{},那么{{}}应该{}为(1)假,因为并不是所有的成对的条款{}-在一起的是真,(2)真,因为至少有一个成对的{{>}结果为真,(3)^{{},因为这是{{},(4)^{{},因为{{},因为{},因为{}{{{}{{{}{arrays应该是什么呢?在
or
您可以在这里使用|,并将其视为位问题:
|
>>> import numpy as np >>> vec = np.arange(10) >>> vec[(vec == 2) | (vec == 7)] array([2, 7])
显式使用numpys矢量化逻辑or:
numpy
或者使用in1d,这在这里效率更高:
in1d
>>> np.in1d(vec, [2, 7]) array([False, False, True, False, False, False, False, True, False, False], dtype=bool) >>> vec[np.in1d(vec, [2, 7])] array([2, 7])
当它在两个标量之间时,}和{},那么{{}}应该{}为(1)假,因为并不是所有的成对的条款{}-在一起的是真,(2)真,因为至少有一个成对的{{>}结果为真,(3)^{{},因为这是{{},(4)^{{},因为{{},因为{},因为{}{{{}{{{}{arrays应该是什么呢?在
or
是明确的,但是正确的向量泛化是什么呢?如果{您可以在这里使用
|
,并将其视为位问题:显式使用
^{pr2}$numpy
s矢量化逻辑or:或者使用
in1d
,这在这里效率更高:相关问题 更多 >
编程相关推荐