我有两个数组,a
和b
,我想找到第一个n唯一(跨a
和b
)项的索引。最好用一个例子来解释:
# 0 1 2 3 4 5 6 7 8 9 10 11 12
a = np.asarray([1, 1, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 6])
b = np.asarray([0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 1, 1])
对于n=1,我希望结果是[0, 2, 3, 4, 5, 7, 8, 10]
(列表不包含index=1,因为它已经由index=0((a[0], b[0]) == (a[1], b[1])
)给出),而不是index=6,因为它已经由index=4在结果列表中给出,index=9不包括在内,因为index=8是等效的)。你知道吗
对于n=2,结果应该是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
(结果中允许在a
和b
上出现2个唯一的匹配项)。你知道吗
我不知道如何用numpy来表达。。。感谢您的帮助。你知道吗
检查以下内容我正在使用
lexsort
通过两个数组获取排序顺序,然后使用diff
和flatnonzero
找到需要添加split
点的组方法#1:非常直接地使用
pandas
,如果您可以使用它-方法#2:对于带有
ints
的输入数组,在注重性能的情况下,我们可以使用一个更为NumPy的版本,如-这不是100%的NumPy解决方案。最后一步使用列表理解。我不确定100%NumPy解决方案是否可行。然而:
将阵列合并为二维阵列:
查找唯一值:
对于每个唯一值,请在2d数组中找到其
N
最小索引:相关问题 更多 >
编程相关推荐