这是一个初学者Numpy用户提出的一个基本问题:我有一个2D数组,比如5行2列,你可以看到10个2D向量,我想测试表中是否有给定的向量。在
例如:
>>> tableau = array(range(10), dtype = uint8)
>>> tableau.shape = (5,2)
>>> print tableau
[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]
[ 8 9]]
>>> [0, 1] in tableau
True
最后一行给出True,但tableau中的'[0,2]也是。在
目前,我计算欧几里德距离是否为0,但我相信有一个更简单的答案。在
谢谢你的帮助
直截了当地说,您可以使用
any()
遍历一个生成器,将数组与array_equal
进行比较。在可以对匹配数组执行布尔约简:
我编写了一个函数来解决这个问题,它也处理多维情况。(@ecatmur的答案在两个维度中完美地工作,但在1D或3D+中失败)
1D用if语句处理,ND通过将数组大小调整为2D来处理,这样@ecatmur的算法就可以工作了。我想解决这个问题的其他方法包括列表理解或循环(这实际上可能更有效,但只有当列表很长且元素接近开始的时候);不过,这似乎更像是一种新的方法。在
如果您希望从库中使用,也可以在此处找到函数:
https://github.com/davidmashburn/np_utils(明显的免责声明,我是作者;)
相关问题 更多 >
编程相关推荐