麻烦填充一个numpy数组

时间:2010-12-08 21:47:50

标签: python arrays numpy matplotlib

下面的代码没有填充名为RRmeanArray的numpy / pylab数组。任何人都可以告诉我如何修复代码,以便填充数组吗?

    import pylab as p
    RRmeanArray = p.array([])
    startBeatIndex = 0
    endBeatIndex = 10
    for k in range(int(p.floor(len(QRSandRRarray[0])/10))-1):
        print '++++++++++++++++++++++++++++++++++++++++++++'
        print 'k is:  ',k
        print 'startBeatIndex is:  ',startBeatIndex
        print 'endBeatIndex is:  ',endBeatIndex
        print 'p.mean(QRSandRRarray[1,startBeatIndex:endBeatIndex]) is:  ',p.mean(QRSandRRarray[1,startBeatIndex:endBeatIndex])
        newMean = p.mean(QRSandRRarray[1,startBeatIndex:endBeatIndex])
        print 'newMean is:  ',newMean
        RRmeanArray += [newMean]
        print 'len(RRmeanArray) is:  ',len(RRmeanArray)
        startBeatIndex += 10
        endBeatIndex += 10
        print '++++++++++++++++++++++++++++++++++++++++++++'

以下是我在python shell中作为输出获得的典型迭代k:

++++++++++++++++++++++++++++++++++++++++++++
k is:   619
startBeatIndex is:   6190
endBeatIndex is:   6200
p.mean(QRSandRRarray[1,startBeatIndex:endBeatIndex]) is:   0.5971
newMean is:   0.5971
len(RRmeanArray) is:   0
++++++++++++++++++++++++++++++++++++++++++++

编辑: 谢谢,托马斯。你几乎得到了它。工作版本是:

    RRmeanArray = p.zeros(len(range(int(p.floor(len(QRSandRRarray[0])/10))-1)))
    startBeatIndex = 0
    endBeatIndex = 10
    for i,k in enumerate(range(int(p.floor(len(QRSandRRarray[0])/10))-1)):
        newMean = p.mean(QRSandRRarray[1,startBeatIndex:endBeatIndex])
        RRmeanArray[i] += [newMean]
        startBeatIndex += 10
        endBeatIndex += 10

现在回答这个问题了。

1 个答案:

答案 0 :(得分:1)

numpy数组显然不存在+ =运算符(调用方法array.extend)。如果你正在使用一个numpy数组,你应该通过使它成为你需要的全部大小来预先分配它。

RRmeanArray = p.zeros(len(range(int(p.floor(len(QRSandRRarray[0])/10))-1)))
for i,k in enumerate(range(int(p.floor(len(QRSandRRarray[0])/10))-1)):
    RRmeanArray[i] = p.mean(QRSandRRarray[1,startBeatIndex:endBeatIndex])
    startBeatIndex += 10
    endBeatIndex += 10

添加到数组的末尾并不是numpy数组的用途 - 为此您可能需要一个列表。

编辑:修复newMean为RRmeanArray,一直意味着什么。 我认为这是你想要的,而不是你通过[newMean]增加RRmeanArray [i]的版本,但我很高兴有些东西适合你。