Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.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_Python 3.x - Fatal编程技术网

Python 将三维阵列转换为二维阵列

Python 将三维阵列转换为二维阵列,python,python-3.x,Python,Python 3.x,我想将三维形状数组(m,n,l)转换为二维形状数组(m*n,l),如下所示: A = [[[1, 2],[3, 4]], [[5, 6],[7, 8]]] 到 对于范围(l)中的每个i,我使用 它起作用了。但是,当我使用signal.hilbert(B)时,我得到以下错误 Traceback (most recent call last): File "E:/IMFsPasesAndDifferences_FV/FollowingTheSameLogicAsMatlab.py", lin

我想将三维形状数组(m,n,l)转换为二维形状数组(m*n,l),如下所示:

A = [[[1, 2],[3, 4]],  [[5, 6],[7, 8]]]

对于范围(l)中的每个i,我使用

它起作用了。但是,当我使用
signal.hilbert(B)
时,我得到以下错误

Traceback (most recent call last):   File "E:/IMFsPasesAndDifferences_FV/FollowingTheSameLogicAsMatlab.py", line 41, in <module>
    HilbertMatrix = signal.hilbert(TempMatrix)   File "C:\Users\Tiwa\Anaconda3\envs\IMFsPasesAndDifferences_FV\lib\site-packages\scipy\signal\signaltools.py", line 1624, in hilbert
    Xf = fftpack.fft(x, N, axis=axis)   File "C:\Users\Tiwa\Anaconda3\envs\IMFsPasesAndDifferences_FV\lib\site-packages\scipy\fftpack\basic.py", line 284, in fft
    return work_function(tmp,n,1,0,overwrite_x)
_fftpack.error: failed in converting 1st argument `x' of _fftpack.zrfft to C/Fortran array
Traceback(最近一次调用last):文件“E:/IMFsPasesAndDifferences\u FV/followerthesamelogicasmatlab.py”,第41行,在
HilbertMatrix=signal.hilbert(TempMatrix)文件“C:\Users\Tiwa\Anaconda3\envs\IMFsPasesAndDifferences\u FV\lib\site packages\scipy\signal\signaltools.py”,hilbert中第1624行
Xf=fftpack.fft(x,N,axis=axis)文件“C:\Users\Tiwa\Anaconda3\envs\IMFsPasesAndDifferences\u FV\lib\site packages\scipy\fftpack\basic.py”,fft中第284行
返回工作函数(tmp,n,1,0,覆盖)
_fftpack.error:无法将_fftpack.zrfft的第一个参数“x”转换为C/Fortran数组
我想知道是否存在另一种不使用order='F'重塑矩阵的方法


提前感谢。

您显示的重塑是从
(l,m,n)
(l,m*n)
,而不是
(l*m,n)
。通过交换最后两个轴,可以在保持C顺序的同时模拟F顺序:

B = np.swapaxes(A, -2, -1).reshape(A.shape[0], -1)

请注意,这将复制您的数据,因为交换后阵列将不连续。

这是否回答了您的问题

import numpy as np

A = np.array([[[1, 2],[3, 4]],  [[5, 6],[7, 8]]])

B = A.T.reshape(-1, A.shape[2]).T


我没有台式自动取款机,但在重塑之前交换前两个轴是否有效?您是否正在寻找
numpy。重塑(A,(2,-1))
?您能展示一下如何构建
B
?你的代码无法生成你现在所要求的数组。@MadPhysicator你能解释一下在这种情况下我们为什么要避免
重塑
?@MykolaZotko。哦如果先准备阵列,则重塑没有问题。仅进行重塑将无法正确排列图元。
B = np.swapaxes(A, -2, -1).reshape(A.shape[0], -1)
import numpy as np

A = np.array([[[1, 2],[3, 4]],  [[5, 6],[7, 8]]])

B = A.T.reshape(-1, A.shape[2]).T