Python numpy-通过筛选未合并的成员以增量方式重建数据阵列

Python numpy-通过筛选未合并的成员以增量方式重建数据阵列,python,arrays,numpy,Python,Arrays,Numpy,考虑到我有一个假设: all_data.shape (220000, 28, 28) type(all_data) numpy.ndarray 我想检查这个数组的每个成员,过滤掉那些我不想要的。因此,我想得到完全相同形状的新阵列 比如: #save first image and its label in separate array #we will store unique values sanitized_data = all_data[0] sanitized_labels = al

考虑到我有一个假设:

all_data.shape
(220000, 28, 28)

type(all_data)
numpy.ndarray
我想检查这个数组的每个成员,过滤掉那些我不想要的。因此,我想得到完全相同形状的新阵列

比如:

#save first image and its label in separate array
#we will store unique values
sanitized_data = all_data[0]
sanitized_labels = all_labels[0]
#lets illimnate dupes
#store of existing hashes
hashes = set()
#go over each image
for i in range(0,len(all_labels)):
    #check if its hash is in list hashes
    if not md5(all_data[i]).hexdigest() in hashes:
        #record its hash and copy to new dataset
        sanitized_data = np.stack((sanitized_data, all_data[i]))
        sanitized_labels = np.stack((sanitized_labels, all_labels[i]))      
        hashes.add(md5(all_data[i]).hexdigest())
但我得到:

ValueError: all input arrays must have the same shape
我不知道如何正确地做到这一点。一旦找到我喜欢的数组,我想沿着第一个轴递增地添加新数组。不知道如何正确地使用numpy执行此操作?我在谷歌上搜索了dstack action,但它似乎沿着错误的轴堆叠内容。

复制自评论:


最好将组件数组累积到一个列表中,并对整个列表应用一次
concatenate
。也要养成在进行过程中检查尺寸的习惯


@hpaulj上一个建议成功了,谢谢

你所说的“过滤掉”是什么意思?设置为0或删除。如果删除元素,就不能保留相同的形状。我建议在Python会话中使用numpy,制作一些具有各种形状的小数组,并练习沿不同的轴将它们凹入<代码>np。连接是基本操作
hstack
dstack
等只需调整尺寸并在某个轴上缩合即可。不要在黑暗中蹒跚而行。用一些小的和可观察的东西练习。最好在一个列表中累积组件数组,并对整个列表应用一次
concatenate
。也要养成在进行过程中检查尺寸的习惯。@hpaulj上一个建议奏效了,谢谢!