Numpy Mean Structured Array

Przypuśćmy, że mam uporządkowaną tablicę studentów (ciągi) i wyniki testów (ints), gdzie każdy wpis jest wynikiem, który dany student otrzymał w określonym teście. Oczywiście każdy uczeń ma wiele wpisów w tej tablicy.

Przykład
import numpy
grades = numpy.array([('Mary', 96), ('John', 94), ('Mary', 88), ('Edgar', 89), ('John', 84)],
                     dtype=[('student', 'a50'), ('score', 'i')])

print grades
#[('Mary', 96) ('John', 94) ('Mary', 88) ('Edgar', 89) ('John', 84)]

Jak łatwo obliczyć średni wynik każdego ucznia? Innymi słowy, jak wziąć średnią tablicy w wymiarze „wynik”? Chciałbym to zrobić

grades.mean('score')

i niech Numpy wróci

[('Mary', 92), ('John', 89), ('Edgar', 89)]

ale Numpy narzeka

TypeError: an integer is required

Czy istnieje prosty sposób na zrobienie tego z łatwością? Myślę, że może to wiązać się z widokiem struktury tablicy z innym typem dtype. Każda pomoc byłaby doceniana. Dzięki.

Edytować
>>> grades = numpy.zeros(5, dtype=[('student', 'a50'), ('score', 'i'), ('testid', 'i'])
>>> grades[0] = ('Mary', 96, 1)
>>> grades[1] = ('John', 94, 1)
>>> grades[2] = ('Mary', 88, 2)
>>> grades[3] = ('Edgar', 89, 1)
>>> grades[4] = ('John', 84, 2)
>>> np.mean(grades, 'testid')
TypeError: an integer is required

questionAnswers(3)

yourAnswerToTheQuestion