将3D阵列转换为2D阵列

时间:2019-12-04 17:54:03

标签: python python-3.x

我想将形状(m,n,l)的3d数组转换为形状(m * n,l)的2d数组,如下所示:

 - name: Extract files from discovered zip file
   unarchive:
     src: "{{ base_path }}/weblogic-deployment/environments/{{ client_environment }}/discovered_domain.zip"
     dest: "{{ base_path }}/weblogic-deployment/environments/{{ client_environment }}/tmp"
     exclude: 
      - ./wlsdeploy/applications/
     remote_src: yes  

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

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

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

有效。但是,当我使用reshape(A[i, :, :], (1, -1), order='F') 时,会出现以下错误。

signal.hilbert(B)

我想知道是否存在不使用 order ='F'来重塑矩阵的另一种方法。

谢谢。

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

这会回答您的问题吗?

import numpy as np

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

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