如何修复:TypeError: cannot perform reduce with flexible type

如何修复: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由字符串类型的数据组成)。

例子:产生错误的代码

# import necessary packages
import numpy as np
  
# create a 2D Array
students = np.array([['Student ID', 'Student Name', 'Branch', 'Marks'],
                     [101, 'Hary', 'CSE', 87],
                     [102, 'Ron', 'ECE', 88],
                     [103, 'Alexa', 'CSE', 72]])
  
# mean of marks(3rd column)
print(students[:, 3].mean())

输出:

如何修复:类型错误:无法用灵活的类型执行还原操作

为了克服这个问题,使用Pandas DataFrame而不是NumPy创建一个2D数组。由于DataFrame的每一行都有一个索引值,每一列都有一个名称,这有助于解释器区分不同类型的列。

这个单一的替代方案有效地解决了这个问题。

例子:解决的代码

# import necessary packages
import pandas as pd
  
# create dataframe
students = pd.DataFrame({'student_ID': [101, 102, 103],
                         'student_Name': ['Hary', 'Ron', 'Alexa'],
                         'Branch': ['CSE', 'ECE', 'CSE'],
                         'Marks': [87, 88, 72]})
# Table
print(students)
  
# mean values for all numeric columns
print(students.mean())

输出:

如何修复:类型错误:无法用灵活的类型执行还原操作

学生表和均值结果

在上面的例子中,如果没有指定列名,数据框架的平均值将为所有数字类型的列生成–student_ID和Marks列是浮动类型的。所以它会计算这两列的平均值,其余的列是字符串类型。所以它不会计算出平均值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy教程