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

2024-10-03 13:30:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须减少数组的密度,方法是使用一个以100步为单位遍历的for循环,并将原始数组的值复制到一个新数组中:

soundDataHere是一个[7][22000]dim数组,我希望cleanSoundData是一个[7][220]dim数组

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]那样扩展它


Tags: 方法inforsizedef单位range数组
3条回答

假设数组soundData是一个7 X 22000保存您的数据。因此,创建一个大小为7 x 220的新数组cleanSoundData可以如下操作。甚至更广义的是它的2 x 1000还是{}。在

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

希望这对你有用。在

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

使用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模块,因为矢量化数组操作要比使用for循环处理Python对象快得多(在某些情况下,速度高达100倍)。在

Numpy模块是专门为这些类型的用例设计的,所以我鼓励您学习如何使用它。在

相关问题 更多 >