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

时间:2018-12-29 08:54:12

标签: python arrays

我必须使用遍历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])

我一直不知道如何在foor循环中使用append和extend函数来重新创建密度较小的新数组。

示例:[[1,2,3,4,5],[6,7,8,9,10]]step = 2 应该在我的新cleanSoundData数组中返回[[1,3,5],[6,8,10]]

但仅像[1,3,5,6,8,10]

那样扩展它

3 个答案:

答案 0 :(得分:0)

使用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模块是专门为这类用例设计的,因此,我鼓励您学习如何使用它。

答案 1 :(得分:0)

也许您应该尝试创建两个不同的临时列表对象,在其中,您只需在for循环之后将所需元素“扩展”到其中的每个元素(即右侧和左侧子列表)中。然后“附加”这两个列表,而不是在cleanSoundData中扩展。

答案 2 :(得分:0)

假设数组soundData7 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

希望这对您有用。