|
|
1
2
这是一个O(n)-ish解决方案(ish,因为如果重复很长,它显然不可能是O(n))。实际上,根据输入长度的不同,可以通过牺牲O(n)和替换
代码:
|
|
|
2
2
方法#1:基于Broadacasting的方法
使用
我们还可以使用
方法#2:具体案例解决方案
由于没有重复和排序的输入数组,我们可以使用
稍微修改一下,可能更有效的方法是-
方法#3:一般情况 以下是一般情况的解决方案(允许重复)-
计时
使用
将重新排列(uint8数据)转换为
样本运行-
覆盖的通用版本
版本#1:
版本#2:
|
|
|
3
1
纯Python方法发电机理解另一种纯python实现,带有生成器和列表理解。与您的代码相比,内存效率可能会更高,但与numpy版本相比可能会更慢。对于排序数组,这将更快。
考虑数组排序的Python for循环这里有一个替代版本,它使用简单的python for循环,并考虑到数组被排序,因此它只检查需要检查的对。
计时
我使用@Paul Panzer的mock\u data()函数比较了计时,并将其与
|
|
|
unfolx · numpy数组不等式的执行时间 1 年前 |
|
|
mchaudh4 · 用numpy表示三对角矩阵 1 年前 |
|
|
Geremia · 2D NumPy数组+1D数组? 1 年前 |
|
|
LMC · Numpy数组布尔索引以获取包含元素 1 年前 |
|
|
HJA24 · 根据条件用值正向填充Numpy矩阵/掩码 1 年前 |
|
|
Amarth Gûl · 找到一组向量的最近收敛点 1 年前 |
|
|
Mr. W · numpy.divide是函数、类还是其他什么? 1 年前 |
|
|
Mr. W · 为什么numpy.array在编辑内部数据时如此缓慢? 1 年前 |