堆叠并重塑Numpy阵列

2024-04-29 00:58:39 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个42D数组,如下所示

import numpy as np
    
t1=np.array([[0,0,1],[0,0,1],[1,1,0]])
t2=np.array([[0,1,0],[1,0,1],[0,1,0]])
t3=np.array([[0,0,1],[0,0,0],[1,0,0]])
t4=np.array([[0,1,1],[1,0,1],[1,1,0]])

我可以知道如何组合和重塑它以获得如下输出吗

[[[0. 0. 0. 0.]
      [0. 1. 0. 1.]
      [1. 0. 1. 1.]]
     [[0. 1. 0. 1.]
      [0. 0. 0. 0.]
      [1. 1. 0. 1.]]
     [[1. 0. 1. 1.]
      [1. 1. 0. 1.]
      [0. 0. 0. 0.]]]

Tags: importnumpyasnp数组arrayt1t3
3条回答
print(np.array([t1,t2,t3,t4]).T)
In [66]: t1=np.array([[0,0,1],[0,0,1],[1,1,0]])
    ...: t2=np.array([[0,1,0],[1,0,1],[0,1,0]])
    ...: t3=np.array([[0,0,1],[0,0,0],[1,0,0]])
    ...: t4=np.array([[0,1,1],[1,0,1],[1,1,0]])
In [67]: t1.shape
Out[67]: (3, 3)
In [68]: np.stack((t1,t2,t3,t4),axis=2)
Out[68]: 
array([[[0, 0, 0, 0],
        [0, 1, 0, 1],
        [1, 0, 1, 1]],

       [[0, 1, 0, 1],
        [0, 0, 0, 0],
        [1, 1, 0, 1]],

       [[1, 0, 1, 1],
        [1, 1, 0, 1],
        [0, 0, 0, 0]]])

数组的转置(也是np.stack((), axis=0))产生相同的结果,但这只是因为(3,3)数组中的每一个都是对称的

In [70]: np.array((t1,t2,t3,t4))
Out[70]: 
array([[[0, 0, 1],
        [0, 0, 1],
        [1, 1, 0]],

       [[0, 1, 0],
        [1, 0, 1],
        [0, 1, 0]],

       [[0, 0, 1],
        [0, 0, 0],
        [1, 0, 0]],

       [[0, 1, 1],
        [1, 0, 1],
        [1, 1, 0]]])
In [1]: import numpy as np

In [2]: t1=np.array([[0,0,1],[0,0,1],[1,1,0]])
   ...: t2=np.array([[0,1,0],[1,0,1],[0,1,0]])
   ...: t3=np.array([[0,0,1],[0,0,0],[1,0,0]])
   ...: t4=np.array([[0,1,1],[1,0,1],[1,1,0]])

In [3]: np.array((t1, t2, t3, t4)).T
Out[3]:
array([[[0, 0, 0, 0],
        [0, 1, 0, 1],
        [1, 0, 1, 1]],

       [[0, 1, 0, 1],
        [0, 0, 0, 0],
        [1, 1, 0, 1]],

       [[1, 0, 1, 1],
        [1, 1, 0, 1],
        [0, 0, 0, 0]]])

.T等价于transpose函数

相关问题 更多 >