我尝试运行下面的代码,但是需要很长时间,有没有办法改进这个代码?我尝试了很多Python函数,但它们似乎都是为处理1D数组设计的,对于这段代码我很抱歉,因为我非常新手:
一个返回包含唯一元素的数组的函数:
```python def unique_array(arr): unique = [] for i in arr: if i not in unique: unique.append(i) return unique ```
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数组作为输入运行它(形状= 2000,28,28):
vadu=get_unique_values(3Darray)
编辑:这个问题已经在其他链接的问题中解决,谢谢Divakar!
axis
。 - sascha