目标:I有一个大的一维数组(3000000+),它包含许多重复的距离。我正在尝试编写最快速的函数,它返回数组中出现的所有距离。我用numpy编写了一个函数,但是在代码的一行中有一个瓶颈。Swift性能是一个问题,因为计算是在一个for循环中为2400个不同的大距离数组进行的。
import numpy as np
for t in range(0, 2400):
a=np.random.randint(1000000000, 5000000000, 3000000)
b=np.bincount(a,minlength=np.size(a))
c=np.where(b == 3)[0] #SLOW STATEMENT/BOTTLENECK
return c
2000000000,3005670000,2000000000,12345667,4000789000,12345687,12345667,2000000000,12345667 预期的结果:给定一个一维距离数组,当查询返回主数组中出现3次的所有距离的数组时,期望返回一个数组2000000000,12345667。
我该怎么办?
发布于 2017-12-12 17:41:14
您可以使用Counter
>>> a = np.array([2000000000,3005670000,2000000000,12345667,4000789000,12345687,12345667,2000000000,12345667])
>>> c = Counter(a)
>>> np.array([i for i in c if c[i] >= 3])
array([2000000000, 12345667])
https://stackoverflow.com/questions/47778162
复制相似问题