ajf*_*w.s 6 python arrays numpy
training_images = np.array([i for i in images if i not in validation_images])
Run Code Online (Sandbox Code Playgroud)
以上是错误的(如下面的评论中所述).这样做的正确和快捷方式是什么?
我的validation_images只是
validation_images = images[::6]
Run Code Online (Sandbox Code Playgroud)
并且图像的形状是(60000,784).这是一个numpy数组.
目前的方法是不可接受的,因为它太慢了.
我总是对这些事情使用布尔掩码,你可以考虑:
# Mask every sixth row
mask = (np.arange(images.shape[0]) % 6) != 0
# Only use the not masked images
training_images = images[mask]
Run Code Online (Sandbox Code Playgroud)
验证集将是每个被屏蔽的元素:
validation_images = images[~mask]
Run Code Online (Sandbox Code Playgroud)
numpy 数组上的数学运算按元素工作,因此取模( %
) 将在每个元素上执行并返回另一个具有相同形状的数组。该!= 0
工作也按元素进行,并比较模数是否不为零。所以掩码只是一个数组,False
其中包含值不是 anint * 6
以及True
它在哪里。