Python 将三维阵列转换为二维阵列
我想将三维形状数组(m,n,l)转换为二维形状数组(m*n,l),如下所示: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
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