张量维度为2的列表类表索引操作
类表片段操作中,[:] 采用默认值从0索引到 len(list),前闭后开
[1:] 标识从索引1开始到列表结束
[:-1]标识从索引0开始到列表结束
[m:n] 表示从索引m开始到n索引结束
[::]表示从索引0开始到列表结束,步长为默认值1
[m:n:2] 表示从索引m开始到n结束,步长为2
2,对于张量维度大于2维以上的索引片段段操作
[m,:,:n,0] 表示取第0维的第m索引表示的整维度值,第1索引的整个纬度值,第3索引取[0:n]片段,第4维的第0索引整段
例如 对于张量 [20,1000,200,1] ,第一维向量长度为20,第二维向量长度为1000,第三维向量长度为200,第四维向量长度为1
[2,:890,:,0] 表示 取第一维的索引为2,第二维向量取[0:890]片段,第三维取整个向量长度,第四维向量索引为0值(向量只有一维)
可以看出 逗号是分割张量维度的。每个逗号前的冒号是用于切片当前张量维度所表示的向量的长度
new_wav_data_lst = np.zeros((20, 10000, 200, 1)) # (批次大小,帧数,每帧的采样点数,通道数)(4, 1032, 200, 1)和图像卷积的输入纬度一致
for i in range(20):
#wav_data_lst 的shape是 [20,890,200]形状
new_wav_data_lst[i, :wav_data_lst[i].shape[0], :, 0] = wav_data_lst[i]#列表片段操作,表示对自定义张量片段进行赋值,第一维所在向量取索引取 i,张量第二维所表示的向量的[0:wav_data_lst[i].shape[0]] ,张量第三维所在向量的整个长度,第四维所表示向量索引为0值(一维向量就是一个标量值),赋值张量 wav_data_lst[i]表示取第一维坐在向量的第i索引,取得值为[890,200] 赋值给new_wav_data_lst