将 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
我需要将 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