Numpy数组排除了一些元素

时间:2016-02-09 23:41:10

标签: python arrays numpy

training_images = np.array([i for i in images if i not in validation_images])

以上是错误的(如下面的评论中所述)。这是一个正确而快捷的方法吗?

我的validation_images只是

 validation_images = images[::6]

并且图像的形状是(60000,784)。 这是一个numpy数组。

目前的方法是不可接受的,因为它太慢了。

2 个答案:

答案 0 :(得分:4)

我总是使用boolean masks来做这些事情,你可以考虑:

# Mask every sixth row
mask = (np.arange(images.shape[0]) % 6) != 0

# Only use the not masked images
training_images = images[mask]

验证集将是每个被屏蔽的元素:

validation_images = images[~mask]

numpy数组上的数学运算在元素方面是有效的,因此对每个元素执行modulo%)并返回另一个具有相同形状的数组。 != 0也可以按元素方式工作,并比较模数是否为零。因此,掩码只是一个包含False的数组,其值不是int * 6,而是True

答案 1 :(得分:0)

Z = np.linspace(0,1,12)[1:-1] 

#Create a vector of size 10 with values ranging from 0 to 1, both excluded

print(Z)