Python 如何将3D矩阵拆分为列表中排列的3D矩阵?
我有一个NumPy数组,形状如下:Python 如何将3D矩阵拆分为列表中排列的3D矩阵?,python,numpy,scipy,Python,Numpy,Scipy,我有一个NumPy数组,形状如下: (1532, 2036, 5) (1532, 2036) 我想生成一个数组列表,其中每个数组都具有以下形状: (1532, 2036, 5) (1532, 2036) 可以使用以下命令对三维阵列进行切片: [x[:,:,i] for i in range(5)] 上面将为您提供一个二维阵列列表 对于多维阵列,可以缩放相同的过程您可以使用 [x[:,:,i] for i in range(5)] 上面将为您提供一个二维阵列列表 可以为多维数组缩放相同
(1532, 2036, 5)
(1532, 2036)
我想生成一个数组列表,其中每个数组都具有以下形状:
(1532, 2036, 5)
(1532, 2036)
可以使用以下命令对三维阵列进行切片:
[x[:,:,i] for i in range(5)]
上面将为您提供一个二维阵列列表
对于多维阵列,可以缩放相同的过程您可以使用
[x[:,:,i] for i in range(5)]
上面将为您提供一个二维阵列列表
可以为多维数组缩放相同的过程您可以用来表示直到最后一个维度的所有维度。例如:
arr = np.random.rand(4, 3, 2)
arr
array([[[ 0.35235813, 0.57984153],
[ 0.53743048, 0.46753367],
[ 0.80048303, 0.07982378]],
[[ 0.1339381 , 0.84586721],
[ 0.81425027, 0.41086151],
[ 0.34039991, 0.19972737]],
[[ 0.2112466 , 0.73086434],
[ 0.03755819, 0.40113463],
[ 0.74622891, 0.74695994]],
[[ 0.99313615, 0.65634951],
[ 0.90787642, 0.37387861],
[ 0.8738962 , 0.41747727]]])
最后一个维度数组的列表可以构造为@Usernamenotfound,也可以使用省略号来构造,如下所示:
[arr[..., i] for i in range(arr.shape[-1])]
[array([[ 0.35235813, 0.53743048, 0.80048303],
[ 0.1339381 , 0.81425027, 0.34039991],
[ 0.2112466 , 0.03755819, 0.74622891],
[ 0.99313615, 0.90787642, 0.8738962 ]]),
array([[ 0.57984153, 0.46753367, 0.07982378],
[ 0.84586721, 0.41086151, 0.19972737],
[ 0.73086434, 0.40113463, 0.74695994],
[ 0.65634951, 0.37387861, 0.41747727]])]
每个元素都具有形状(4,3)
同样,您也可以对第一维度使用相同的方法,生成4(3,2)个数组
您可以使用来表示直到最后一个维度的所有维度。例如:
arr = np.random.rand(4, 3, 2)
arr
array([[[ 0.35235813, 0.57984153],
[ 0.53743048, 0.46753367],
[ 0.80048303, 0.07982378]],
[[ 0.1339381 , 0.84586721],
[ 0.81425027, 0.41086151],
[ 0.34039991, 0.19972737]],
[[ 0.2112466 , 0.73086434],
[ 0.03755819, 0.40113463],
[ 0.74622891, 0.74695994]],
[[ 0.99313615, 0.65634951],
[ 0.90787642, 0.37387861],
[ 0.8738962 , 0.41747727]]])
最后一个维度数组的列表可以构造为@Usernamenotfound,也可以使用省略号来构造,如下所示:
[arr[..., i] for i in range(arr.shape[-1])]
[array([[ 0.35235813, 0.53743048, 0.80048303],
[ 0.1339381 , 0.81425027, 0.34039991],
[ 0.2112466 , 0.03755819, 0.74622891],
[ 0.99313615, 0.90787642, 0.8738962 ]]),
array([[ 0.57984153, 0.46753367, 0.07982378],
[ 0.84586721, 0.41086151, 0.19972737],
[ 0.73086434, 0.40113463, 0.74695994],
[ 0.65634951, 0.37387861, 0.41747727]])]
每个元素都具有形状(4,3)
同样,您也可以对第一维度使用相同的方法,生成4(3,2)个数组
您还可以使用排列轴,然后简单地遍历数组:
import numpy as np
a = ... # Define the input array here
out = [a for a in np.transpose(arr, (2, 0, 1))]
您还可以使用排列轴,然后简单地遍历数组:
import numpy as np
a = ... # Define the input array here
out = [a for a in np.transpose(arr, (2, 0, 1))]
我想那应该是2D阵列。简单地使用列表理解-[a[:,:,i]表示范围内的i(a.shape[-1])]
?类似的问题(但要解包为变量):。我提出了这个列表理解,被接受的答案转换了轴。我认为是2D数组。简单地使用列表理解-[a[:,:,i]表示范围内的i(a.shape[-1])]
?类似的问题(但要解包为变量):。我提出了这个列表理解,被接受的答案转换了轴。您可能希望通过检查三维中的切片数,或范围内的I(x.shape[2]),使循环适应数组中的切片数
。您可能希望通过检查第三维中的切片数,使循环适应阵列中的切片数,或检查范围内的i(x.shape[2])
。
。。。请问你为什么投了反对票?将帮助我,使我可以改善这一职位,如果需要的话。向下的投票人。。。请问你为什么投了反对票?将帮助我,使我可以改善这个职位,如果需要的话。