一些学习技巧的编码器不接受很多列的2D数组。
制作示例数据
lzt_int = [1, 2, 3, 4, 5, 6]
d1_int = np.array(lzt_int)
d2_int_multi = d2_int.reshape(int(d2_int.shape[0]/3), 3)多列二维阵列
>>> d2_int_multi
array([[1, 2, 3],
[4, 5, 6]])想要高效地变成像这样的2D单列的三维数组。
array([
[[1],
[4]],
[[2],
[5]],
[[3],
[6]],
])转化尝试
>>> d2_int_multi.reshape(3, 2, 1, order='C')
array([[[1],
[2]],
[[3],
[4]],
[[5],
[6]]])
>>> d2_int_multi.reshape(3, 2, 1, order='F')
array([[[1],
[5]],
[[4],
[3]],
[[2],
[6]]])
>>> d2_int_multi.reshape(3, 2, 1, order='A')
array([[[1],
[2]],
[[3],
[4]],
[[5],
[6]]])为了内存,我不想访问每一列,在将其添加到3D数组之前,将其设置为2D数组。
发布于 2021-01-11 14:33:01
您需要添加一个额外的轴,然后转到结果。您可以使用以下行执行这些操作:
d2_int_multi[None].T因为这不会移动任何数据,而只会创建原始数组的一个新视图,所以它非常高效。
https://stackoverflow.com/questions/65668636
复制相似问题