在Python或NumPy中,找出第一次出现的子阵列的最佳方法是什么?
例如,我有
a = [1, 2, 3, 4, 5, 6]
b = [2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
找出b出现在哪里的最快方法(运行时间)是什么?我理解字符串这非常容易,但对于列表或numpy ndarray呢?
非常感谢!
[编辑]我更喜欢numpy解决方案,因为从我的经验来看,numpy矢量化比Python列表理解要快得多.同时,大数组是巨大的,所以我不想把它转换成字符串; 这将是(太长).
我正在使用2D形状阵列来存储经度+纬度对.有一次,我必须合并其中两个2D数组,然后删除任何重复的条目.我一直在寻找类似于numpy.unique的功能,但我没有运气.我一直在考虑的任何实现都看起来非常"未经优化".例如,我正在尝试将数组转换为元组列表,删除带有set的重复项,然后再次转换为数组:
coordskeys = np.array(list(set([tuple(x) for x in coordskeys])))
Run Code Online (Sandbox Code Playgroud)
有没有现成的解决方案,所以我不重新发明轮子?
为了说清楚,我正在寻找:
>>> a = np.array([[1, 1], [2, 3], [1, 1], [5, 4], [2, 3]])
>>> unique_rows(a)
array([[1, 1], [2, 3],[5, 4]])
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我想只使用一个元组列表,但是这些列表非常大,以至于它们消耗了我的4Gb RAM + 4Gb交换(numpy数组更节省内存).