将Sklearn数字大小fom 8*8扩展到32*32

2024-03-29 06:30:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在将Sklearn数字数据集的位数从8*8扩展到32*32像素时遇到了一个问题。在

我的方法是取8*8数组,然后展平它。也就是说,总共从64像素放大到1024像素。因此,我只想将每行的值乘以16倍:

  1. 创建一个具有1024个NaN值的新数组(=newfeatures)。在
  2. 每16次更换一次。newfeatures数组的值与原始数组的值,即(0=0),(16=1),(32=2),(…),(1008=64)。 3.用dropna(ffill)替换剩余的NaN值,将原始图像“扩展”为32*32像素的图像。在

因此,我使用以下代码:

#Load in the training dataset

digits=datasets.load_digits()
features=digits.data
targets=digits.target

#Plot original digit
ax[0].imshow(features[0].reshape((8,8)))

enter image description here

^{pr2}$

enter image description here

正如你所看到的,结果并不像预期的那样


Tags: 数据方法代码图像数字像素数组sklearn
2条回答

您可以使用skimage的resize,如下所示

from skimage import transform
new_features = np.array(list
                        (map
                         (lambda img: transform.resize(
                                        img.reshape(8,8),#old shape
                                          (32, 32), #new shape
                                          mode='constant',
                                         #flatten the resized image
                                          preserve_range=True).ravel(),
             features)))

new_features形状将为(17971024),显示第一个图像将显示 enter image description here

基于上述解决方案,我认为以下方法更简洁一些:

from skimage import transform

newfeatures=[transform.resize(features[i].reshape(8,8),(32,32))for i in 
range(len(features))]

plt.imshow(newfeatures[0].reshape((32,32)))

enter image description here

相关问题 更多 >