猿问

如何在 Python 列表中添加和扩展新行?

我必须通过使用以 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]


阿晨1998
浏览 189回答 2
2回答

茅侃侃

假设数组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希望这对你有用。

一只甜甜圈

使用 Numpy 和您的示例:import numpy as npl = [1,3,5,6,8,10]l2 = np.reshape(l,[2,-1])>>> l2array([[ 1,  3,  5],[ 6,  8, 10]])看起来您正在处理声音数据,因此我强烈建议使用 numpy 模块,因为矢量化数组操作将比对 Python 对象使用 for 循环快得多(在某些情况下,速度高达 100 倍)。Numpy 模块是专门为这些类型的用例设计的,因此我鼓励您学习如何使用它。
随时随地看视频慕课网APP

相关分类

Python
我要回答