gpt4 book ai didi

python - 我能否找出一个 numpy 向量是否显示为另一个向量的切片?

转载 作者:行者123 更新时间:2023-12-01 06:28:50 24 4
gpt4 key购买 nike

我想知道我的 numpy 向量 needle 是否作为切片或连续子向量出现在另一个向量 haystack 内。

我想要一个函数 find(needle, haystack) 当且仅当存在可能的整数索引 pq 这样时才返回 true needle 等于 haystack[p:q],其中“equals”表示元素在所有位置都相等。

示例:

find([2,3,4], [1,2,3,4,5]) == True
find([2,4], [1,2,3,4,5]) == False # not contiguous inside haystack
find([2,3,4], [0,1,2,3]) == False # incomplete

这里我使用列表来简化说明,但实际上它们将是 numpy 向量(一维数组)。

对于 Python 中的字符串,等效操作很简单:in: "bcd"in "abcde"== True

<小时/>

关于维度的附录。

亲爱的读者,您可能会被类似的问题所吸引,例如 testing whether a Numpy array contains a given row ,或Checking if a NumPy array contains another array 。但我们可以忽略这种相似性,因为考虑维度没有帮助。

向量是一维数组。用 numpy 术语来说,长度为 N 的向量将具有 .shape == (N,) ;它的形状长度为 1。

其他引用的问题通常是寻求在二维矩阵中找到行的精确匹配。

我正在寻求像 window 一样沿着一维干草堆的同一轴滑动我的一维,直到整个 em> 匹配通过窗口可见的 haystack 部分。

最佳答案

如果您愿意创建两个数组的副本,则可以使用 Python in 运算符来处理字节对象:

def find(a, b):
return a.tobytes() in b.tobytes()

print(
find(np.array([2,3,4]), np.array([1,2,3,4,5])),
find(np.array([2,4]), np.array([1,2,3,4,5])),
find(np.array([2,3,4]), np.array([0,1,2,3])),
find(np.array([2,3,4]), np.array([0,1,2,3,4,5,2,3,4])),
)

# True False False True

关于python - 我能否找出一个 numpy 向量是否显示为另一个向量的切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60001444/

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