不能重塑到正确的形状大小

时间:2018-01-07 15:41:41

标签: python pandas numpy reshape

我的原始数据集是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)?

1 个答案:

答案 0 :(得分:0)

演示:

来源系列:

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)