假设我有一个结构化数组,其中包含学生(字符串)和测试成绩(整数),每个条目都是特定学生在特定测试中获得的分数。每个学生在这个数组中都有多个条目。
但是Numpy抱怨。
示例
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)]
我如何轻松计算每个学生的平均分数?换句话说,我如何取出'score'维度数组的平均值?我想这样做:
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
np.mean(axis=1)
。 - ecatmurnumpy.zeros((3, 2), dtype=[('student', 'a50'), ('score', 'i')])
然后grades[0, 0] = ('Mary', 96)
等等。 - ecatmur