gpt4 book ai didi

Python - 在数组中创建唯一值的掩码

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:53 25 4
gpt4 key购买 nike

我有两个numpy数组,xy(长度大约2M)。 x 是有序的,但有些值是相同的。

任务是在 x 中的值相同时删除 xy 的值。我的想法是制作一个面具。这是我到目前为止所做的:

def createMask(x):
idx = np.empty(x.shape, dtype=bool)
for i in xrange(len(x)-1):
if x[i+1] == x[i]:
idx[i] = False

return idx

idx = createMask(x)
x = x[idx]
y = y[idx]

此方法工作正常,但速度较慢(705 毫秒,%timeit)。我也觉得这看起来很笨拙。是否有更优雅和高效的方式(我相信有)。

已更新为最佳答案

第二种方法是

idx = [x[i+1] == x[i] for i in xrange(len(x)-1)]

第三种(也是最快的)方法是

idx = x[:-1] == x[1:]

结果是(使用 ipython 的 %timeit):

第一种方法:751ms

第二种方法:618ms

第三种方法:3.63ms

两种方法均归功于 mtitan8。

最佳答案

我认为最快的方法是使用 numpy 的 == 数组运算符比较 x:

idx = x[:-1] == x[1:]

在我的机器上,使用 x 和 [0, 100] 中的一百万个随机整数,

In[15]: timeit idx = x[:-1] == x[1:]
1000 loops, best of 3: 1 ms per loop

关于Python - 在数组中创建唯一值的掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19386437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com