繁体   English   中英

检查两个向量是否相等python

[英]check if two vectors are equal python

我有一个名为cm的向量,它不会改变

cm = np.array([[99,99,0]])

和另一个叫做pt的矢量。 我想循环某些值。 但是当两者相等时,我希望它跳过而不执行操作。 为了这篇文章,我只是说它打印出pt的值,但实际上我有一大堆操作要运行。 这是我的代码

for i in range (95,103): 
    for j in range (95,103):
        pt = np.array([[i,j,0]])
        if pt == cm:
            continue
        print pt

我已经尝试将第4行更改为

if pt.all == cm.all 

但是它会打印所有内容,包括我要跳过的内容,如果我将其转换为内容

if pt.all() == cm.all()

这也行不通。 这两者之间有什么区别?

有没有人知道我怎么能修复它,所以当pt = [99,99,0]它会跳过操作并回到循环的开头? 谢谢!

你可能正在寻找(pt == cm).all() ,虽然如果涉及np.allclose(pt, cm)可能是一个更好的想法,以防你有数字错误。

(1) pt.all == cm.all

这将检查两种方法是否相等:

>>> pt.all
<built-in method all of numpy.ndarray object at 0x16cbbe0>
>>> pt.all == cm.all
False

(2) pt.all() == cm.all()

这将检查每种情况下是否all匹配的结果。 例如:

>>> pt
array([[99, 99,  0]])
>>> pt.all()
False
>>> cm = np.array([10, 10, 0])
>>> cm.all()
False
>>> pt.all() == cm.all()
True

(3) (pt == cm).all()

这将创建一个数组测试,以查看两者是否相等,并返回结果是否全为True:

>>> pt
array([[99, 99,  0]])
>>> cm
array([[99, 99,  0]])
>>> pt == cm
array([[ True,  True,  True]], dtype=bool)
>>> (pt == cm).all()
True

一个缺点是,这构造了一个临时数组,但实际上这通常不是问题。

另外:当你用numpy数组编写嵌套循环时,你通常会在某处犯错。 Python级循环很慢,因此您首先使用numpy会失去许多好处。 但这是一个单独的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM