如何修复:TypeError: cannot perform reduce with flexible type
在这篇文章中,我们将讨论TypeError: cannot perform reduce with flexible type and how can we fix it.当我们为一个由多种类型的数据组成的二维NumPy数组寻找平均值时,可能会发生这个错误。
使用中的数据集:
Student ID | Student Name | Branch | Marks |
---|---|---|---|
101 | Harry | CSE | 87 |
102 | Ron | ECE | 88 |
103 | Alexa | CSE | 72 |
当我们使用NumPy创建这个表时,这个二维数组由多种类型的数据组成。 在这里,我们有字符串和整数数据类型。 要找到任何一个数字列的平均值,如Marks,它会抛出TypeError,因为它不知道当不是所有的值都是数字时如何取平均值(如Student Name, Branch由字符串类型的数据组成)。
例子:产生错误的代码
输出:
为了克服这个问题,使用Pandas DataFrame而不是NumPy创建一个2D数组。由于DataFrame的每一行都有一个索引值,每一列都有一个名称,这有助于解释器区分不同类型的列。
这个单一的替代方案有效地解决了这个问题。
例子:解决的代码
输出:
学生表和均值结果
在上面的例子中,如果没有指定列名,数据框架的平均值将为所有数字类型的列生成–student_ID和Marks列是浮动类型的。所以它会计算这两列的平均值,其余的列是字符串类型。所以它不会计算出平均值。