首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy将"2D多列“重塑为”2D单列的3D“

Numpy将"2D多列“重塑为”2D单列的3D“
EN

Stack Overflow用户
提问于 2021-01-11 14:22:59
回答 1查看 24关注 0票数 2

一些学习技巧的编码器不接受很多列的2D数组。

制作示例数据

代码语言:javascript
复制
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)

多列二维阵列

代码语言:javascript
复制
>>> d2_int_multi

array([[1, 2, 3],
       [4, 5, 6]])

想要高效地变成像这样的2D单列的三维数组。

代码语言:javascript
复制
array([
    [[1],
     [4]],

    [[2],
     [5]],

    [[3],
     [6]],
])

转化尝试

代码语言:javascript
复制
>>> 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数组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-11 14:33:01

您需要添加一个额外的轴,然后转到结果。您可以使用以下行执行这些操作:

代码语言:javascript
复制
d2_int_multi[None].T

因为这不会移动任何数据,而只会创建原始数组的一个新视图,所以它非常高效。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65668636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档