学生 (文字列) とテストの点数 (整数) の構造化された配列があるとします。各エントリは、特定の学生が特定のテストで受け取った点数です。当然のことながら、各学生はこの配列に複数のエントリを持っています。
例
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)]
各生徒の平均点を簡単に計算するにはどうすればよいですか? つまり、「スコア」次元で配列の平均を取得するにはどうすればよいですか? やりたい
grades.mean('score')
Numpy を返す
[('Mary', 92), ('John', 89), ('Edgar', 89)]
しかし Numpy は不平を言う
TypeError: an integer is required
これを簡単に行う Numpy 風の方法はありますか? 構造化された配列を別の dtype で表示する必要があると思います。どんな助けでも大歓迎です。ありがとう。
編集
>>> 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