当前位置: 首页 > 面试题库 >

在另一个数组中查找一个数组的匹配索引

蒯华彩
2023-03-14
问题内容

我有两个numpy数组A和B。A包含唯一值,而B是A的子数组。

例如:

A = np.array([1,2,3,4,5,6,7,8,9,10])
B = np.array([1,7,10])
# I need a function fun() that:
fun(A,B)
>> 0,6,9

问题答案:

您可以使用np.in1d带有np.nonzero-

np.nonzero(np.in1d(A,B))[0]

np.searchsorted如果您关心维护订单,也可以使用-

np.searchsorted(A,B)

对于一般情况,当AB是未排序的数组时,您可以在中引入sorter选项np.searchsorted,就像这样-

sort_idx = A.argsort()
out = sort_idx[np.searchsorted(A,B,sorter = sort_idx)]

broadcasting为了解决一般情况,我还会添加我最喜欢的内容-

np.nonzero(B[:,None] == A)[1]

样品运行-

In [125]: A
Out[125]: array([ 7,  5,  1,  6, 10,  9,  8])

In [126]: B
Out[126]: array([ 1, 10,  7])

In [127]: sort_idx = A.argsort()

In [128]: sort_idx[np.searchsorted(A,B,sorter = sort_idx)]
Out[128]: array([2, 4, 0])

In [129]: np.nonzero(B[:,None] == A)[1]
Out[129]: array([2, 4, 0])


 类似资料:
  • 如果我从问题中选择“q1”,我如何从答案中选择第一个数组? 这是我现在的代码:

  • 问题内容: 最近有人要求我为一份工作编写3个测试程序。它们将仅使用核心Java API和我选择的任何测试框架来编写。应在适当的地方实施单元测试。 尽管我根本没有收到任何反馈,但我想他们不喜欢我的解决方案(否则我会收到他们的来信),所以我决定在这里展示我的程序,并询问这种实现是否可以认为是好的,并且,如果没有,那为什么呢? 为避免混淆,我现在只问第一个。 实现一个函数,以在另一个更大的数组中查找一个

  • 问题内容: 给定一个字节数组,我如何在其中找到(较小)字节数组的位置? 使用,该文档看起来很有希望,但是如果我正确的话,那只会让我在要搜索的数组中找到一个单独的字节。 (我认为这并不重要,但以防万一:有时搜索字节数组将是常规的ASCII字符,有时是控制字符或扩展的ASCII字符。因此使用String操作并不总是合适的) 大数组可能在10到10000个字节之间,而小数组大约在10个字节。在某些情况下

  • 问题内容: 我有两个一维数组x和y,一个比另一个小。我试图找到x中y的每个元素的索引。 我发现有两种简单的方法可以做到这一点,第一种很慢,第二种需要占用大量内存。 记忆猪 是否有更快的方法或更少的内存密集型方法?理想情况下,搜索将利用以下事实:我们不是在列表中搜索一件事,而是在搜索许多东西,因此稍微适合并行化。如果您不假设y的每个元素实际上都在x中,则可获得加分。 问题答案: 正如Joe King

  • 我想知道是否可以将一个数组查找到另一个数组中。我不感兴趣的是寻找数组的单个元素,而是数组作为一个整体。我试过一些代码 编辑:使用的原因是我的数组的大小,粗略计算,可能是大约1000万。我想要一种高效的搜索技术。 我不确定我的代码是否应该工作。我有很多错误 bm.cpp:12:20:error:“make_boyer_moore_searcher”不是“std”std::make_boyer_moo

  • 问题内容: 假设我有一个带有任意值的矩阵A: 矩阵B包含A中元素的索引: 我该如何选择值一个指向由乙,即: 问题答案: 你可以使用 一个人也可以使用 样品运行