我必须通过使用以 100 为步长遍历的 for 循环并将原始数组的值复制到新数组中来降低数组的密度:soundDataHere 是一个[7][22000]暗淡的数组,我希望 cleanSoundData 是一个[7][220]暗淡的数组def reduceDensity(soundDataHere): for i in range(numberOfFiles): for j in range(0, soundDataHere[i].size-1, 100): cleanSoundData.extend(soundDataHere[i][j])我一直不知道如何在 foo 循环中使用 append 和 extend 函数来重新创建一个新的密度较低的数组。例如:[[1,2,3,4,5],[6,7,8,9,10]]一个step = 2 应该返回[[1,3,5],[6,8,10]]我的新cleanSoundData阵列但只是像这样扩展它 [1,3,5,6,8,10]
2 回答

茅侃侃
TA贡献1842条经验 获得超21个赞
假设数组soundData是一个7 X 22000保存你的数据。因此cleanSoundData,7 x 220可以按如下方式创建一个新的大小数组。甚至更普遍的是它的2 x 1000或1000 x 50000。
cleanSoundData = []
for i in range(len(soundData)):
cleanSoundData.append([]) # adding new row
for j in range(0, len(soundData[i]), 100):
cleanSoundData[i].append(soundData[i][j]) # adding data to the row
希望这对你有用。

一只甜甜圈
TA贡献1836条经验 获得超5个赞
使用 Numpy 和您的示例:
import numpy as np
l = [1,3,5,6,8,10]
l2 = np.reshape(l,[2,-1])
>>> l2
array([[ 1, 3, 5],[ 6, 8, 10]])
看起来您正在处理声音数据,因此我强烈建议使用 numpy 模块,因为矢量化数组操作将比对 Python 对象使用 for 循环快得多(在某些情况下,速度高达 100 倍)。
Numpy 模块是专门为这些类型的用例设计的,因此我鼓励您学习如何使用它。
添加回答
举报
0/150
提交
取消