等效于Python中的MATLAB“ reshape”函数

时间:2018-06-29 14:27:32

标签: python numpy matrix

假设X1是一个大小为(768, 1024, 9)的数组,其中包含一些双精度值。

我想用下面的Python编写等效的MATLAB代码。

X = reshape(X1, [768*1024 9]); 

我已经使用以下代码行对其进行了尝试:

X = np.zeros((768*1024, 9))
for i in range(768*1024):
    for k in range(1024):
        for l in range(768):
            for j in range(9):
                X[i][j] = X1[l][k][j]

但是,由于它有四个循环,因此这花费了很多时间。如何改善这一点,以及为此最佳的方法是什么(不使用循环)?

PS:在回答之前,请先查看Matlab代码在做什么。通过在X中分配X1,Python代码应具有与Matlab相同的功能。

链接:https://drive.google.com/drive/folders/1iE7dtvQ2BN1E_jBcTvThZ39_7IvgQGcm

链接中的Matlab输出不完整,但是您可以从前几个值中了解一下。

2 个答案:

答案 0 :(得分:2)

Numpy可以通过告诉shape您想要的形状是什么来做到这一点:

import numpy as np
X1 = np.zeros((768, 1024, 9))
X = X1.reshape(768*1024, 9)
print(X.shape)

答案 1 :(得分:1)

您可以使用numpy.reshape

import numpy as np
X = np.zeros((768, 1024, 9))
X = np.reshape(X, (-1, 9))

形状中的-1被自动填充。