In [72]: x = np.zeros(10000,dtype=int)
In [73]: x[100:2000] = 1
In [74]: %timeit np.flatnonzero(x).mean()
10000 loops, best of 3: 115 µs per loop
In [75]: %timeit np.flatnonzero(x[:-1] != x[1:]).mean()+0.5
10000 loops, best of 3: 38.7 µs per loop
使用np.nonzero()[0]代替np.flatnonzero和{}代替{}-
In [107]: %timeit (np.nonzero(x[:-1] != x[1:])[0].sum()+1)/2.0
10000 loops, best of 3: 30.6 µs per loop
In [90]: %timeit start,stop = np.flatnonzero(x[:-1] != x[1:])
10000 loops, best of 3: 21.3 µs per loop
In [91]: %timeit (stop + start + 1)/2.0
100000 loops, best of 3: 4.45 µs per loop
作为一种方法,我们可以得到非零指数,并得到这些指数的平均值作为质心,如下-
这是另一种方法,使用移位数组比较来获得该切片的开始和停止索引,并获得这些索引的平均值,以确定质心,如下-
^{pr2}$运行时测试-
使用}代替{}-
np.nonzero()[0]
代替np.flatnonzero
和{或者,对于第二种方法,我们可以存储启动和停止索引,然后简单地将它们相加以获得更有效方法的重心,因为我们可以避免对
np.mean
的函数调用,如-时间安排-
同样,我们可以在这里用
np.nonzero()[0]
进行实验。在你不能简单地做下面的事吗?在
相关问题 更多 >
编程相关推荐