繁体   English   中英

重塑 numpy 阵列/矩阵

[英]reshaping numpy array/matrix

我试图重塑以下 numpy 阵列。

由此:

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

       [[-1, -2, -3],
        [-2, -3, -4],
        [-3, -4, -5]]], dtype=int64)

像这样:

array([[[ 1,  2,  3],
        [-1, -2, -3]],

       [[ 2,  3,  4],
        [-2, -3, -4]],

       [[ 3,  4,  5],
        [-3, -4, -5]]], dtype=int64)

尝试使用reshape function,但这对我不起作用。

谢谢

这会起作用:

import numpy as np

x = np.array([[[ 1,  2,  3],
               [ 2,  3,  4],
               [ 3,  4,  5]],
              [[-1, -2, -3],
               [-2, -3, -4],
               [-3, -4, -5]]], dtype=np.int64)
np.vstack(map(lambda x: [x], zip(*(x))))
array([[[ 1,  2,  3],
        [-1, -2, -3]],
       [[ 2,  3,  4],
        [-2, -3, -4]],
       [[ 3,  4,  5],
        [-3, -4, -5]]], dtype=int64)

只是沿轴1 np.stack

arr = np.array([[[ 1,  2,  3],
                 [ 2,  3,  4],
                 [ 3,  4,  5]],

                [[-1, -2, -3],
                 [-2, -3, -4],
                 [-3, -4, -5]]])

np.stack(arr, 1)

结果是

array([[[ 1,  2,  3],
        [-1, -2, -3]],

       [[ 2,  3,  4],
        [-2, -3, -4]],

       [[ 3,  4,  5],
        [-3, -4, -5]]])

您应该能够使用numpy.reshape function 没有任何错误。

就是这样:

a = array([[[ 1,  2,  3],
            [ 2,  3,  4],
            [ 3,  4,  5]],
           [[-1, -2, -3],
            [-2, -3, -4],
            [-3, -4, -5]]], dtype=int64)

a = a.reshape(3, 2, 3)

这是数组“a”将转换为的内容:

array([[[ 1  2  3]
        [ 2  3  4]]

       [[ 3  4  5]
        [-1 -2 -3]]

       [[-2 -3 -4]
        [-3 -4 -5]]])

这不是重塑问题。 这是转置任务 - 重新排序轴:

In [293]: arr.transpose(1,0,2)                                                          
Out[293]: 
array([[[ 1,  2,  3],
        [-1, -2, -3]],

       [[ 2,  3,  4],
        [-2, -3, -4]],

       [[ 3,  4,  5],
        [-3, -4, -5]]])

stack通过在第一个维度上迭代并在新的中间轴上连接来工作。 transpose只是做一个view ,所以会更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM