为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

阿晨1998 2021-09-28 16:21:42
我必须通过使用以 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

希望这对你有用。


查看完整回答
反对 回复 2021-09-28
?
一只甜甜圈

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


查看完整回答
反对 回复 2021-09-28
  • 2 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信