无法重塑到正确的形状大小

Can't reshape to right shape size

我的原始数据集是 7049 张图像 (96x96),格式如下:

train_x.shape= (7049,)

train_x[:3]
0    238 236 237 238 240 240 239 241 241 243 240 23...
1    219 215 204 196 204 211 212 200 180 168 178 19...
2    144 142 159 180 188 188 184 180 167 132 84 59 ...
Name: Image, dtype: object

我想将图像字符串拆分为 96x96 并获取 (7049,96,96) 数组。 我试试这个方法:

def split_reshape(row):
    return np.array(row.split(' ')).reshape(96,96)

result = train_x.apply(split_reshape)

那我还是得到了result.shape=(7049,) 如何重塑为 (7049,96,96) ?

演示:

来源系列:

In [129]: train_X
Out[129]:
0    238 236 237 238 240 240 239 241 241
1    219 215 204 196 204 211 212 200 180
2    144 142 159 180 188 188 184 180 167
Name: 1, dtype: object

In [130]: type(train_X)
Out[130]: pandas.core.series.Series

In [131]: train_X.shape
Out[131]: (3,)

解决方案:

In [132]: X = train_X.str \
                     .split(expand=True) \
                     .astype(np.int16) \
                     .values.reshape(len(train_X), 3, 3)

In [133]: X
Out[133]:
array([[[238, 236, 237],
        [238, 240, 240],
        [239, 241, 241]],

       [[219, 215, 204],
        [196, 204, 211],
        [212, 200, 180]],

       [[144, 142, 159],
        [180, 188, 188],
        [184, 180, 167]]], dtype=int16)

In [134]: X.shape
Out[134]: (3, 3, 3)