gpt4 book ai didi

arrays - 测试一行是否在数组中的 Pythonic 方法

转载 作者:太空狗 更新时间:2023-10-29 17:48:44 26 4
gpt4 key购买 nike

这似乎是一个简单的问题,但我一直找不到好的答案。

我正在寻找一种 pythonic 方法来测试 2d numpy 数组是否包含给定行。例如:

myarray = numpy.array([[0,1],
[2,3],
[4,5]])

myrow1 = numpy.array([2,3])
myrow2 = numpy.array([2,5])
myrow3 = numpy.array([0,3])
myrow4 = numpy.array([6,7])

给定 myarray,我想编写一个函数,如果我测试 myrow1 则返回 True,如果我测试 myrow2、myrow3 和 myrow4 则返回 False。

我尝试了“in”关键字,但没有给我预期的结果:

>>> myrow1 in myarray
True
>>> myrow2 in myarray
True
>>> myrow3 in myarray
True
>>> myrow4 in myarray
False

似乎只检查一个或多个元素是否相同,而不检查所有元素是否相同。有人可以解释为什么会这样吗?

我可以逐个元素地做这个测试,像这样:

def test_for_row(array,row):
numpy.any(numpy.logical_and(array[:,0]==row[0],array[:,1]==row[1]))

但这不是很pythonic,如果行有很多元素就会出现问题。必须有一个更优雅的解决方案。感谢您的帮助!

最佳答案

下面的 SO 问题应该可以帮到你,但基本上你可以使用:

any((myrow1 == x).all() for x in myarray)

Numpy.Array in Python list?

关于arrays - 测试一行是否在数组中的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6561211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com