我有一组3个数组,我会互相比较。数组a包含一组值,数组b和c的值应部分相同。
就是这样,如果说a[0] == b[0]
比c[0]
总是错误的值
为了更好的解释,我尝试显示我的意思。
import numpy as np
a = np.array([2, 2, 3, 4])
b = np.array([1, 3, 3, 4])
c = np.array([2, 2, 4, 3])
print(a == b)
# return: [False False True True]
print(a == c)
# return: [True True False False]
如您所见,从这两个集合中我都有两个True和两个False。因此,如果两者之一都为真,则总数应为真。当我执行以下操作时,我得到一个单个的True / False数组。答案就是我想要的...
print((a == b).all())
# return: False
print((a == c).all())
# return: False
print(a.all() == (b.all() or c.all()))
# return: True
当我制作数组b和c时,我有种种说法,在两种情况下都是错误的,我应该以False结尾
import numpy as np
a = np.array([2, 2, 3, 4])
b = np.array([1, 3, 3, 4])
c = np.array([5, 2, 4, 3])
print(a == b)
# return: [False False True True]
print(a == c)
# return: [False True False False]
print((a == b).all())
# return: False
print((a == c).all())
# return: False
到目前为止,一切都很好
print(a.all() == (b.all() or c.all()))
# return: True
这部分不好,应该是假的!!我如何获得这样的一个或函数,以便当a
相同值中的每个值都存在于b
或c
??中时,我以True结尾?
编辑:关于a[0] == b[0]
比的解释c[0]
:我有一个python函数,其中包含相位信息,并且必须执行一些操作。在此之前,我想检查是否与虚值数组或相位角数组有关。我想在做某事之前先检查一下。问题在于相位角,因为右侧是反相pi。因此,对于每个值,我都有两个选择。是的,在大多数情况下,它是排他的,或者在+/- pi / 2的情况下不是,因为两者都是正确的,这也很好。
根据您的示例和解释,我想您想要的是:
对于每个位置,正好与
b
或c
具有相同的值a
如果是这样,可以使用以下代码完成:
def is_exclusively_jointly_same(a, b, c):
return np.logical_xor(a==b, a==c).all() # or use ^ below
# return ((a==b)^(a==c)).all()
的^
是异或(XOR)运算符,它返回True
当且仅当精确地它的参数中的一个是True
。
因此,表达式的(a==b)^(a==c)
意思是a==b
或a==c
,但不是全部。然后.all()
检查是否对数组中的所有位置都正确。
例子:
>>> a = np.array([1,2,3,4,5]) >>> b = np.array([1,2,0,0,5]) >>> c = np.array ([0,0,3,4,0]) >>> is_exclusively_jointly_same(a,b,c) 是 >>> a = np.array([1,2,3,4,5]) >>> b = np.array([0,2,0,0,5])#第一个值都不是1 >>> c = np.array([0,0,3,4,0]) >>> is_exclusively_jointly_same(a ,b,c) 错误 >>> a = np.array([1,2,3,4,5]) >>> b = np.array([1,2,0,0,5])#首先既重视1 >>> C = np.array([1,0,3,4,0]) >>> is_exclusively_jointly_same(A,b,C) 假
如果您想要的是:
对于每个位置,至少一个
b
和c
应该具有相同的值作为a
,那么您需要更改为OR而不是XOR,如下所示:
def is_jointly_same(a, b, c):
return np.logical_or(a==b, a==c).all() # or use | below
# return ((a==b) | (a==c)).all()
例子:
>>> a = np.array([1,2,3,4,5]) >>> b = np.array([1,2,0,0,5]) >>> c = np.array ([0,0,3,4,0]) >>> is_jointly_same(a,b,c) 是 >>> a = np.array([1,2,3,4,5]) >>> b = np.array([0,2,0,0,5])#第一个值都不是1 >>> c = np.array([0,0,3,4,0]) >>> is_jointly_same(a ,b,c) 错误 >>> a = np.array([1,2,3,4,5]) >>> b = np.array([1,2,0,0,5])#首先值都为1 >>> c = np.array([1,0,3,4,0]) >>> is_jointly_same(a,b,c)为 真
这里的关键是,已经计算出每个单独的值时,.all()
应将其作为最终聚合器应用一次。因此,当您发现自己正在申请.all()
多次时,应该感到担忧。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句