Python np.array上的维数变化

Python np.array上的维数变化,python,arrays,numpy,Python,Arrays,Numpy,假设我们有一个大小为(2,2,4)的np.array: 我不知道如何从上一个数组中获取此数组(大小为(2,2,2,2)),它应该包含来自我的_数组的相同数据: np.array([[[[ 0., 0.], [ 0., 0.]], [[ 0., 0.], [ 0., 0.]]], [[[ 0., 0.], [ 0., 0.]], [[ 0.,

假设我们有一个大小为(2,2,4)的np.array:

我不知道如何从上一个数组中获取此数组(大小为(2,2,2,2)),它应该包含来自我的_数组的相同数据:

np.array([[[[ 0.,  0.],
            [ 0.,  0.]],

           [[ 0.,  0.],
            [ 0.,  0.]]],


          [[[ 0.,  0.],
            [ 0.,  0.]],

           [[ 0.,  0.],
            [ 0.,  0.]]]])
我试过:

但我得到了:

array([[[[ 0.],
         [ 0.],
         [ 0.],
         [ 0.]],

        [[ 0.],
         [ 0.],
         [ 0.],
         [ 0.]]],


       [[[ 0.],
         [ 0.],
         [ 0.],
         [ 0.]],

        [[ 0.],
         [ 0.],
         [ 0.],
         [ 0.]]]])

感谢您的支持。

您需要
np。重塑
而不是
np。展开dims

>>> my_array.reshape(2,2,2,2)
array([[[[ 0.,  0.],
         [ 0.,  0.]],

        [[ 0.,  0.],
         [ 0.,  0.]]],


       [[[ 0.,  0.],
         [ 0.,  0.]],

        [[ 0.,  0.],
         [ 0.,  0.]]]])
这是用于此任务的最简单方法:

In [2]: my_array.reshape(2,2,2,2)
Out[2]: 
array([[[[ 0.,  0.],
         [ 0.,  0.]],

        [[ 0.,  0.],
         [ 0.,  0.]]],


       [[[ 0.,  0.],
         [ 0.,  0.]],

        [[ 0.,  0.],
         [ 0.,  0.]]]])
只要有可能,使用
重塑
将创建阵列的新视图(而不是复制任何基础数据)。在这种特殊情况下,返回具有所需形状和尺寸数的新视图并不困难

如果您对重塑是否会复制数据有任何疑问,一个有用的方法是尝试直接设置数组的
.shape
属性:

my_array.shape = (2,2,2,2)

如果在不复制数据的情况下无法进行整形,NumPy将引发错误而不是复制。

使用整形命令:

In [3]: a=np.arange(2*2*4).reshape(2,2,4)

In [4]: a
Out[4]: 
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

    [[ 8,  9, 10, 11],
        [12, 13, 14, 15]]])

In [5]: a.reshape(2,2,2,2)
Out[5]: 
array([[[[ 0,  1],
        [ 2,  3]],

        [[ 4,  5],
        [ 6,  7]]],


    [[[ 8,  9],
        [10, 11]],

        [[12, 13],
        [14, 15]]]])

成功了。感谢所有回答我问题的人。我肯定应该对文档有更好的了解。
my_array.shape = (2,2,2,2)
In [3]: a=np.arange(2*2*4).reshape(2,2,4)

In [4]: a
Out[4]: 
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

    [[ 8,  9, 10, 11],
        [12, 13, 14, 15]]])

In [5]: a.reshape(2,2,2,2)
Out[5]: 
array([[[[ 0,  1],
        [ 2,  3]],

        [[ 4,  5],
        [ 6,  7]]],


    [[[ 8,  9],
        [10, 11]],

        [[12, 13],
        [14, 15]]]])