如何在Python中将嵌套数组转换为多维数组(张量)
我正在处理一个嵌套数组,该数组如下所示:如何在Python中将嵌套数组转换为多维数组(张量),python,arrays,numpy,Python,Arrays,Numpy,我正在处理一个嵌套数组,该数组如下所示: feat=np.load('feat.npy',allow_pickle=True) print(feat) ->array([array([[-1.0160675e+01, -1.3804866e+01, 9.1880971e-01, ..., 1.5415058e+00, 1.1875046e-02, -5.8664594e+00], [-9.9697800e+00, -1.3823588e+01, -7.0
feat=np.load('feat.npy',allow_pickle=True)
print(feat)
->array([array([[-1.0160675e+01, -1.3804866e+01, 9.1880971e-01, ...,
1.5415058e+00, 1.1875046e-02, -5.8664594e+00],
[-9.9697800e+00, -1.3823588e+01, -7.0778362e-02, ...,
1.5948311e+00, 4.3481258e-01, -5.1646194e+00],
[-9.9518738e+00, -1.2771760e+01, -1.2623003e-01, ...,
3.4290311e+00, 2.7361808e+00, -6.0621500e+00],
...,
[-9.9772453e+00, -1.8227636e+01, 5.4514462e-01, ...,
-2.4311361e+01, -1.2033378e+01, -3.0492477e+00],
[-9.8815651e+00, -1.3674727e+01, 5.1737971e+00, ...,
-1.0951551e+01, -2.6184993e+00, 1.5815194e+00],
[-1.0164914e+01, -1.2636200e+01, 4.4198503e+00, ...,
-5.7269883e+00, 4.0758374e-01, -4.4462643e+00]], dtype=float32),
array([[-12.862341 , -5.968506 , -20.532919 , ..., 3.1745207,
6.5410886, -8.223573 ],
[-13.071164 , -6.0360484, -19.319475 , ..., 7.5193286,
2.9258938, -13.224365 ],
[-13.512331 , -4.9030676, -14.524248 , ..., 12.339673 ,
4.6204743, -15.382669 ],
...,
[-11.605266 , -7.1909204, -33.44656 , ..., -11.974911 ,
12.825395 , 10.635098 ],
[-11.769397 , -9.340318 , -34.413307 , ..., -10.077869 ,
8.821722 , 7.704534 ],
[-12.301968 , -10.67318 , -32.46104 , ..., -6.829077 ,
15.29837 , 13.100596 ]], dtype=float32),
我使用numpy.ndarray.shape得到数组的形状是(105835,),数组的第一个元素是(99,13),有没有办法将嵌套数组转换为多维数组,例如(105835,99,13)
我尝试了np.stack,但它报告:
all input arrays must have the same shape
如果我使用np.vstack,那么它将成为2D数组:
temp=np.vstack(x)
temp.shape
->(9215279, 13)
是否有任何方法可以发布形成数组的代码部分?我继续尝试了以下对我很有效的方法:
import numpy
#build random array
array1 = [[[] for i in range(5)] for j in range(5)]
numpy.shape(array1)
它为我输出(5,5,0)
以下是我为回答您的评论而进行的第一次编辑:
我仍然认为我需要了解您是如何在代码中塑造数组的。这就是我所做的,我没有任何错误:
a = array([array([[1,2,3],[1,2,3]]),array([[1,2,3],[1,2,3]])])
b = shape(a)
print(b)
它打印出(2、2、3)。这是一个npy文件,包含wav的MFCC功能。文件,要素数据存储为嵌套数组。请尝试
np.stack
。报告任何错误。np.stack
将在嵌套数组形状不同时引发错误。事实上,这可能就是该数组最初具有这种嵌套结构的原因。@hpaulj我检查了数据,发现嵌套数组的形状不同,所以这意味着我无法将其转换为三维数组?