如何改进从2D numpy数组中删除重复元素的操作?

2024-10-03 21:30:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着运行下面的代码,但是需要很长时间,有什么方法可以改进这个代码吗?我尝试了很多python函数,但所有函数看起来都是为仅使用1D数组而创建的,很抱歉,我对这方面的代码非常陌生:

返回包含唯一元素的数组的函数:

def get_unique_values(dataset):
    uniqueimages=np.empty(dataset.shape, dtype=np.float32)
    u=0

    for i in range(dataset.shape[0]):
        if (check_if_exists(dataset[i,:,:],uniqueimages)==0):
            uniqueimages[u,:,:]=dataset[i,:,:]
            u=u+1

    return uniqueimages[0:u,:,:] 

验证给定元素是否已在数组中的函数:

def check_if_exists( q,a ):
    r=0
    for i in range(a.shape[0]):
        if np.array_equal(q,a[i,:,:]):
            r=1
            break

    return r

然后我运行这个程序,给出一个3D数组作为输入(shape=2000,28,28):

vadu=get_unique_values(3Darray)

编辑:这个问题在另一个链接的问题中解决了,谢谢Divakar!你知道吗


Tags: 函数代码in元素forgetifdef