将 N 个 3 维矩阵插入到新变量中

Insert N matrices with 3 dimensions to a new variable

我需要将 3 维矩阵插入到新变量中。 我正在尝试通过以下方式做到这一点: 创建一个 4 维矩阵并通过提升第四维分别保存三个维度。

示例代码:

from python_speech_features import mfcc  
import numpy as np

X = np.zeros((0,0,0,0),float) #4-dimensional - (0, 0, 0, 0)  
ii = 0  

    for ii in range 1000:  
      data, fs = sf.read(curfile[ii])  
      sig = mfcc(data, fs, winstep=winstep,winlen=winlen,nfft=1024) #size - (49, 13)  
      sig = sig[:, :, np.newaxis] #add third-dimensional - (49, 13, 1)  
      X[:,:,:,ii] = sig

错误:

IndexError: index 0 is out of bounds for axis 3 with size 0

有人可以帮我解决这个问题吗?

要么使用 np.stack(我认为这是最好的方法),要么创建最终大小的初始数组:

np.zeros((49,13,1,1000), 浮动)

你的情况

您没有以正确的方式创建数组。您不能在长度为零的轴中插入值至少为轴指定一些长度

X = np.zeros((10, 10, 10,1000), float)
print(X.shape)
# (10, 10, 10, 1000)

现在您可以通过简单地在任意轴上设置值,

X[:, :, :, 2] = 1
# this will simply set value of 3rd axis's 3rd element to 1