下面的代码没有填充名为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
现在回答这个问题了。
答案 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]的版本,但我很高兴有些东西适合你。