【发布时间】:2020-06-10 11:35:51
【问题描述】:
我正在尝试通过在 Python 中填充 2D 数组来形成 3D 数组。 N 是一个数字,取决于正在读取的文件。矩阵正在形成为 3D,但当我期望它有 N 层时,它似乎只有 1 个“层”。似乎 N 个“层”没有被传递到形成的数组中。
import numpy as np
#'rot' is a 3D matrix of shape (N,3,3)
a=np.array(rot[:,0,0])
b=np.array(rot[:,0,1])
c=np.array(rot[:,0,2])
d=np.array(rot[:,1,0])
e=np.array(rot[:,1,1])
f=np.array(rot[:,1,2])
g=np.array(rot[:,2,0])
h=np.array(rot[:,2,1])
i=np.array(rot[:,2,2])
print(a.shape)
#(N,)
#Forming 3D array
arr=np.array([[[a,b,1],
[d,e,1],
[g,h,i]]])
print(arr.shape)
#(1,3,3)
【问题讨论】:
-
您期望的形状是什么?
1条目可能会导致问题,因为数组现在具有长度为N和整数的向量。尝试np.array([1]*N)得到一个与其他元素形状相同的 1 向量。 -
你看
arr了吗?或arr.dtype。不要只看shape,尤其是形状出乎意料的时候。 -
初始大小1维由
[]的外层产生。 -
您可能需要转置才能将 N 维放在首位。
标签: python arrays numpy matrix