为什么操作符返回True?

问题描述 投票:0回答:1

这个脚本以某种方式返回 True,如果我要求在哪个索引中找到这是真的,它会变得更奇怪。 我希望它检查 [-1,0] 是否是列表 mypolygon 中的元素

import numpy as np
mypolygon = np.array([[0,0],[-3,1],[-1,1],[-2,4],[1,1],[3,3],[3,-2],[0,-2],[0,0]])
point = [-1, 0]
print(point in mypolygon)
print(np.where(mypolygon == point))

打印:

正确 (数组([0, 2, 8]), 数组([1, 0, 1]))

索引如何是3维的?这是怎么回事?

python numpy numpy-ndarray
1个回答
0
投票

point in mypolygon
检查列表和数组的交集是否不为空。例如:
[999, 0] in mypolygon
返回
True

您正在寻找的很可能是沿第一个轴的广播比较,然后

all
+
any
:

(mypolygon == point).all(axis=1).any(axis=0)

输出:

False

中级:

(mypolygon == point).all(axis=1)

# array([False, False, False, False, False, False, False, False, False])

np.where
返回至少一个坐标匹配的索引:

(mypolygon == point)

array([[False,  True],
       [False, False],
       [ True, False],
       [False, False],
       [False, False],
       [False, False],
       [False, False],
       [False, False],
       [False,  True]])

np.where(mypolygon == point)

(array([0, 2, 8]), array([1, 0, 1]))
© www.soinside.com 2019 - 2024. All rights reserved.