假设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输出不完整,但是您可以从前几个值中了解一下。
答案 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被自动填充。