Python 在z轴上重塑numpy阵列的形状

Python 在z轴上重塑numpy阵列的形状,python,numpy,Python,Numpy,我有一个这样的数据集 a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 如何将其重塑为(3,2,2),以便a[:,0,0]=[1,2,3]?您可以使用两个步骤: 第一步 使用order='F'意味着使用类似Fortran的索引顺序读/写元素,第一个索引变化最快,最后一个索引变化最慢 setp2 获得最终结果: In [34]: c[:,0,0] Out[34]: array([1, 2, 3]) 由于您希望保持前3个值“在一起”,我们可以从以下形状开始:

我有一个这样的数据集

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
如何将其重塑为
(3,2,2)
,以便
a[:,0,0]=[1,2,3]

您可以使用两个步骤: 第一步

使用
order='F'
意味着使用类似Fortran的索引顺序读/写元素,第一个索引变化最快,最后一个索引变化最慢

setp2

获得最终结果:

In [34]: c[:,0,0]
Out[34]: array([1, 2, 3])
由于您希望保持前3个值“在一起”,我们可以从以下形状开始:

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

       [[ 7,  8,  9],
        [10, 11, 12]]])
然后交换两个轴:

In [33]: a.reshape(2,2,3).transpose(2,0,1)
Out[33]: 
array([[[ 1,  4],
        [ 7, 10]],

       [[ 2,  5],
        [ 8, 11]],

       [[ 3,  6],
        [ 9, 12]]])
In [34]: _[:,0,0]
Out[34]: array([1, 2, 3])
或者使用不同的转置:

In [35]: a.reshape(2,2,3).transpose(2,1,0)
Out[35]: 
array([[[ 1,  7],
        [ 4, 10]],

       [[ 2,  8],
        [ 5, 11]],

       [[ 3,  9],
        [ 6, 12]]])
带有参数的
transpose()
(也使用
.T
调用)执行相同的操作

所以你的问题有点模棱两可

在另一个答案中提到的以
顺序F
进行重塑也是如此:

In [37]: a.reshape(3,2,2, order='F')
Out[37]: 
array([[[ 1,  7],
        [ 4, 10]],

       [[ 2,  8],
        [ 5, 11]],

       [[ 3,  9],
        [ 6, 12]]])

(虽然这两个步骤,
a.reformate(3,4,order='F').reformate(3,2,2)
产生了我的第一个结果
Out[33]

你看过numpy和
reformate
函数了吗?可能重复@busybear是的,但我不确定如何做。将该数组整形为(3,2,2)并将其索引为[:,0,0]不会给出[1,2,3]
a.reformate(3,2,2,order='F')[:,0,0]
为我返回
[1,2,3]
In [33]: a.reshape(2,2,3).transpose(2,0,1)
Out[33]: 
array([[[ 1,  4],
        [ 7, 10]],

       [[ 2,  5],
        [ 8, 11]],

       [[ 3,  6],
        [ 9, 12]]])
In [34]: _[:,0,0]
Out[34]: array([1, 2, 3])
In [35]: a.reshape(2,2,3).transpose(2,1,0)
Out[35]: 
array([[[ 1,  7],
        [ 4, 10]],

       [[ 2,  8],
        [ 5, 11]],

       [[ 3,  9],
        [ 6, 12]]])
In [37]: a.reshape(3,2,2, order='F')
Out[37]: 
array([[[ 1,  7],
        [ 4, 10]],

       [[ 2,  8],
        [ 5, 11]],

       [[ 3,  9],
        [ 6, 12]]])