проблема с заполнением массива - PullRequest
0 голосов
/ 09 декабря 2010

Мой код ниже не заполняет массив numpy / pylab с именем RRmeanArray.Может кто-нибудь показать мне, как исправить код, чтобы он заполнял массив?

    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 для типичной итерации 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 Ответ

1 голос
/ 09 декабря 2010

Очевидно, что оператор + = (который вызывает метод array.extend) не существует для массивов numpy. Если вы используете массив 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

Добавление конца массива не совсем то, для чего нужны массивы - для этого вам может понадобиться список.

Редактировать: исправлено, что newMean был RRmeanArray, что подразумевалось с самого начала. Я думаю, что это то, что вы хотите, а не ваша версия, где вы увеличиваете RRmeanArray [i] на [newMean], но я рад, что что-то работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...