【发布时间】:2018-10-03 18:38:31
【问题描述】:
我正在使用(x_train, y_train), (x_test, y_test) = mnist.load_data() 从 Keras 导入 mnist 数据集,我想做的是按每个样本的对应数字对每个样本进行排序。我在想一些简单的方法来做到这一点,但我似乎找不到数据的任何标签属性。有什么简单的方法可以做到这一点吗?
【问题讨论】:
我正在使用(x_train, y_train), (x_test, y_test) = mnist.load_data() 从 Keras 导入 mnist 数据集,我想做的是按每个样本的对应数字对每个样本进行排序。我在想一些简单的方法来做到这一点,但我似乎找不到数据的任何标签属性。有什么简单的方法可以做到这一点吗?
【问题讨论】:
y_train 和 y_test 是分别包含与 x_train 和 x_test 中的每个图像相关联的标签的向量。这将告诉您每个图像中显示的数字。因此,只需获取将使用np.argsort 对这些向量进行排序的索引,然后使用这些索引重新排序相应的矩阵。
import numpy as np
idx = np.argsort(y_train)
x_train_sorted = x_train[idx]
y_train_sorted = y_train[idx]
所以如果你想要一个特定数字的所有图像,你可以简单地通过索引相应的矩阵来获取它们
x_train_zeros = x_train[y_train == 0]
x_train_ones = x_train[y_train == 1]
# and so on...
请注意,在这种情况下,您不需要对数据进行预排序。
【讨论】: