Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何按我需要的方式重塑此阵列?_Python_Arrays_Numpy_Reshape - Fatal编程技术网

Python 如何按我需要的方式重塑此阵列?

Python 如何按我需要的方式重塑此阵列?,python,arrays,numpy,reshape,Python,Arrays,Numpy,Reshape,我想重塑一个由三个2x2矩阵组成的数组,即形状为(3,2,2),即 对于此形状数组(2,2,3): 常规的np.reformate(a,(2,2,3))返回以下数组: [[[a1, a2, a3],[a4, b1, b2]], [[b3, b4, c1],[c2, c3, c4]]] 和np。重塑(a,(2,2,3),顺序='F')带来了: [[[a1, b3, c2],[c1, a2, b4]], [[b1, c3, a4],[a3, b2, c4]]] 如何重塑初始阵列以获得所需的

我想重塑一个由三个2x2矩阵组成的数组,即形状为(3,2,2),即

对于此形状数组(2,2,3):

常规的
np.reformate(a,(2,2,3))
返回以下数组:

[[[a1, a2, a3],[a4, b1, b2]],
 [[b3, b4, c1],[c2, c3, c4]]]
np。重塑(a,(2,2,3),顺序='F')
带来了:

[[[a1, b3, c2],[c1, a2, b4]],
 [[b1, c3, a4],[a3, b2, c4]]]
如何重塑初始阵列以获得所需的

这是为了与
matplotlib.pyplot.imshow一起使用,其中三个初始矩阵对应于三种颜色“RGB”,并且每个元素都是[0,1]范围内的浮点。因此,如果有更好的方法,我很乐意知道。

您想要的是转置:

输出:

[[['a1' 'b1' 'c1']
  ['a2' 'b2' 'c2']]

 [['a3' 'b3' 'c3']
  ['a4' 'b4' 'c4']]]

我们只需要排列轴。有两种方法可以做到这一点

使用
np.转置
-

a.transpose(1,2,0) # a is input array
# or np.transpose(a,(1,2,0))
我们也可以使用
np.moveaxis
-

np.moveaxis(a,0,2)    # np.moveaxis(a, 0, -1)
样本运行-

In [157]: np.random.seed(0)

In [158]: a = np.random.randint(11,99,(3,2,2))

In [159]: a
Out[159]: 
array([[[55, 58],
        [75, 78]],

       [[78, 20],
        [94, 32]],

       [[47, 98],
        [81, 23]]])

In [160]: a.transpose(1,2,0)
Out[160]: 
array([[[55, 78, 47],
        [58, 20, 98]],

       [[75, 94, 81],
        [78, 32, 23]]])

查看
转置(顺序)
。您可能需要尝试几个变体,更多解释请参见
a.transpose(1,2,0) # a is input array
# or np.transpose(a,(1,2,0))
np.moveaxis(a,0,2)    # np.moveaxis(a, 0, -1)
In [157]: np.random.seed(0)

In [158]: a = np.random.randint(11,99,(3,2,2))

In [159]: a
Out[159]: 
array([[[55, 58],
        [75, 78]],

       [[78, 20],
        [94, 32]],

       [[47, 98],
        [81, 23]]])

In [160]: a.transpose(1,2,0)
Out[160]: 
array([[[55, 78, 47],
        [58, 20, 98]],

       [[75, 94, 81],
        [78, 32, 23]]])