我有两个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)
对于一般情况,当A
&B
是未排序的数组时,您可以在中引入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中元素的索引: 我该如何选择值一个指向由乙,即: 问题答案: 你可以使用 一个人也可以使用 样品运行