模式识别课程educoder平台实训

NumPy基础及取值操作

第1关:ndarray对象

import numpy as np


def print_ndarray(input_data):
    '''
    实例化ndarray对象并打印
    :param input_data: 测试用例,类型为字典类型
    :return: None
    '''

    #********* Begin *********#
    a=np.array(input_data.get('data'))
    print(a)
    #********* End *********#

第2关:形状操作

import numpy as np


def reshape_ndarray(input_data):
    '''
    将ipnut_data转换成ndarray后将其变形成一位数组并打印
    :param input_data: 测试用例,类型为list
    :return: None
    '''

    #********* Begin *********#
    a=np.reshape(input_data,(1,-1))
    print(a[0])
    #********* End *********#

第3关:基础操作

import numpy as np


def get_answer(input_data):
    '''
    将input_data转换成ndarray后统计每一行中最大值的位置并打印
    :param input_data: 测试用例,类型为list
    :return: None
    '''

    #********* Begin *********#
    a=np.array(input_data)
    a1=len(a)
    b=[]
    for i in range(a1):
        m=a[i].argmax()
        b.append(m)
    c=np.array(b)
    print(c)
    #********* End *********#

第4关:随机数生成

import numpy as np


def shuffle(input_data):
    '''
    打乱input_data并返回打乱结果
    :param input_data: 测试用例输入,类型为list
    :return: result,类型为list
    '''

    # 保存打乱的结果
    result = []
    #********* Begin *********#
    a=len(input_data)
    b=np.random.choice(input_data,size=a,replace=False)
    result=b.tolist()
    #********* End *********#
    return result

第5关:索引与切片

import numpy as np

def get_roi(data, x, y, w, h):
    '''
    提取data中左上角顶点坐标为(x, y)宽为w高为h的ROI
    :param data: 二维数组,类型为ndarray
    :param x: ROI左上角顶点的行索引,类型为int
    :param y: ROI左上角顶点的列索引,类型为int
    :param w: ROI的宽,类型为int
    :param h: ROI的高,类型为int
    :return: ROI,类型为ndarray
    '''

    #********* Begin *********#
    a=data[x:,y:]
    b=a[:h+1,:w+1]
    #print(a)
    #print(b)
    ROI=b
    return ROI
    #********* End *********#

NumPy数组的高级操作

第1关:堆叠操作

import numpy as np


def get_mean(feature1, feature2):
    '''
    将feature1和feature2横向拼接,然后统计拼接后的ndarray中每列的均值
    :param feature1:待`hstack`的`ndarray`
    :param feature2:待`hstack`的`ndarray`
    :return:类型为`ndarray`,其中的值`hstack`后每列的均值
    '''
    #********* Begin *********#
    a=np.hstack((feature1,feature2))
    return a.mean(axis=0)
    #********* End *********#

第2关:比较、掩码和布尔逻辑

import numpy as np


def student(num,input_data):
    result=[]
    # ********* Begin *********#
    input_data =np.array(input_data)
    result = input_data[input_data>num]
    # ********* End *********#
    return result

第3关:花式索引与布尔索引

import numpy as np

def student(input_data):
    result=[]
    #********* Begin *********#
    performance = np.array(input_data)
    result=performance[(performance<='Z')&(performance>='A')]
    # ********* End *********#
    return result

第4关:广播机制

import numpy as np

def student(a,b,c):
    result=[]
    # ********* Begin *********#
    a1=np.array(a)
    b1=np.array(b)
    c1=np.array(c)
    result=a1+b1+c1
    # ********* End *********#
    return result

第5关:线性代数

from numpy import linalg
import numpy as np
def student(input_data):
    '''
    将输入数据筛选性别为男,再进行线性方程求解
    :param input_data:类型为`list`的输入数据
    :return:类型为`ndarray`
    '''
    result=[]
    # ********* Begin *********#
    a = np.array(input_data)
    x=[]
    y=[]
    for i in a:
        if i[0]=='男':
            x.append([int(i[1]),int(i[2])])
            y.append([int(i[-1])])
    if x==[] and y==[]:
        return result
    x=np.array(x)
    y=np.array(y)
    result=linalg.solve(x,y)
    # ********* End *********#
    return result

Pandas初体验

第1关:了解数据处理对象–Series

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import  pandas as pd

def create_series():
    '''
    返回值:
    series_a: 一个Series类型数据
    series_b: 一个Series类型数据
    dict_a:  一个字典类型数据
    '''
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    series_a=Series([1,2,5,7],index=['nu','li','xue','xi'])
    dict_a={'ting':1,'shuo':2,'du':32,'xie':44}
    series_b=Series(dict_a)
    # ********** End **********#

    # 返回series_a,dict_a,series_b
    return series_a,dict_a,series_b

第2关:了解数据处理对象-DataFrame

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import  pandas as pd

def create_dataframe():
    '''
    返回值:
    df1: 一个DataFrame类型数据
    '''
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    dictionary = {'states':['one','0hio','0hio','Nevada','Nevada'],
             'years':[2000,2001,2002,2001,2002],
             'pops':[1.5,1.7,3.6,2.4,2.9],
             }
    df1 = DataFrame(dictionary)
    df1=DataFrame(dictionary,index=['one','two','three','four','five'])
    df1['new_add']=[7,4,5,8,2]
    # ********** End **********#

    #返回df1
    return df1

第3关:读取CSV格式数据

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import  pandas as pd
def read_csv_data():
    '''
    返回值:
    df1: 一个DataFrame类型数据
    length1: 一个int类型数据
    '''
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    df1 = pd.read_csv('test3/uk_rain_2014.csv', header=0)
    df1.columns = ['water_year','rain_octsep','outflow_octsep','rain_decfeb', 'outflow_decfeb', 'rain_junaug', 'outflow_junaug']
    length1=len(df1)
    # ********** End **********#
    #返回df1,length1
    return df1,length1

第4关:数据的基本操作——排序

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import  pandas as pd
def sort_gate():
    '''
    返回值:
    s2: 一个Series类型数据
    d2: 一个DataFrame类型数据
    '''

    # s1是Series类型数据,d1是DataFrame类型数据
    s1 = Series([4, 3, 7, 2, 8], index=['z', 'y', 'j', 'i', 'e'])
    d1 = DataFrame({'e': [4, 2, 6, 1], 'f': [0, 5, 4, 2]})

    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    s2=Series(s1.sort_index())
    d2=d1.sort_values(by='f')
    # ********** End **********#
    #返回s2,d2
    return s2,d2

第5关:数据的基本操作——删除

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import numpy as np
import  pandas as pd

def delete_data():
    '''
    返回值:
    s2: 一个Series类型数据
    d2: 一个DataFrame类型数据
    '''

    # s1是Series类型数据,d1是DataFrame类型数据
    s1 = Series([5, 2, 4, 1], index=['v', 'x', 'y', 'z'])
    d1=DataFrame(np.arange(9).reshape(3,3), columns=['xx','yy','zz'])
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    s2=s1.drop('z')
    d2=d1.drop(['yy'],axis=1)

    # ********** End **********#

    # 返回s2,d2
    return s2, d2

第6关:数据的基本操作——算术运算

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import numpy as np
import  pandas as pd

def add_way():
    '''
    返回值:
    df3: 一个DataFrame类型数据
    '''

    # df1,df2是DataFrame类型数据
    df1 = DataFrame(np.arange(12.).reshape((3, 4)), columns=list('abcd'))
    df2 = DataFrame(np.arange(20.).reshape((4, 5)), columns=list('abcde'))

    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    df3=df1.add(df2,fill_value=4)

    # ********** End **********#

    # 返回df3
    return df3

第7关:数据的基本操作——去重

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import  pandas as pd

def delete_duplicated():
    '''
    返回值:
    df2: 一个DataFrame类型数据
    '''

    # df1是DataFrame类型数据
    df1 = DataFrame({'k1': ['one'] * 3 + ['two'] * 4, 'k2': [1, 1, 2, 3, 3, 4, 4]})
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    df2=DataFrame(df1.drop_duplicates())
    #print(df2)
    # ********** End **********#

    # 返回df2
    return df2

第8关:层次化索引

# -*- coding: utf-8 -*-
from pandas import Series,DataFrame
import  pandas as pd
import numpy as np
def suoying():
    '''
    返回值:
    d1: 一个DataFrame类型数据
    '''
    #s1是Series类型数据
    s1=Series(np.random.randn(10),
           index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'], [1, 2, 3, 1, 2, 3, 1, 2, 2, 3]])
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    d1=s1.unstack()

    # ********** End **********#

    # 返回d1
    return d1
suoying()

Pandas进阶

第1关:Pandas分组聚合

import pandas as pd
import numpy as np

#返回最大值与最小值的差
def sub(df):
    ######## Begin #######
    #求最大值与最小值之差
    return df.max() - df.min()
    ######## End #######

def main():
    ######## Begin #######
    data = pd.read_csv("step1/drinks.csv")#将表格资源读入
    #创建可视化模型
    df = pd.DataFrame(data)
    #对数据进行分组聚合
    mapping = {"wine_servings":sub,"beer_servings":np.sum}
    #打印信息
    print(df.groupby("continent").agg(mapping))
    ######## End #######

if __name__ == '__main__':
    main()

第2关:Pandas创建透视表和交叉表

#-*- coding: utf-8 -*-
import pandas as pd

#创建透视表
def create_pivottalbe(data):
    ###### Begin ######
    return data.pivot_table(index=["day"],values=["tip"],columns=["time"],margins=True,aggfunc=sum)

    ###### End ######

#创建交叉表
def create_crosstab(data):
    ###### Begin ######
    return pd.crosstab(index=[data.day],columns=[data.time],values=data.tip,aggfunc=sum ,margins=True)

    ###### End ######

def main():
    #读取csv文件数据并赋值给data
    ###### Begin ######
    data = pd.read_csv("step2/tip.csv")
    ###### End ######
    piv_result = create_pivottalbe(data)
    cro_result = create_crosstab(data)
    print("透视表:\n{}".format(piv_result))
    print("交叉表:\n{}".format(cro_result))

if __name__ == '__main__':
    main()

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
educoder实训平台是一款专注于教育训练的在线学习平台,其中包含了涵盖多个领域的实训课程和题目。其中,有关数字图像处理的答案是指在数字图像处理课程中的相关题目的解答或问题的解决方案。 数字图像处理是指对数字化的图像进行各种操作和处理的技术。通过对图像的采集、存储、传输和显示等环节的操作,可以改变图像的特征、颜色、亮度等属性,以满足不同需求。 在educoder实训平台中,数字图像处理相关题目的答案可以涉及到以下内容: 1. 图像的采集与处理:包括如何从实际场景中获取图像数据,如何对图像进行预处理、增强和滤波等操作,以及如何进行图像的分割、插值等操作。 2. 图像特征提取与识别:包括如何从图像中提取出各种特征,如边缘、角点、纹理等,以及如何通过特征匹配、目标检测等方法进行图像的识别和分类。 3. 图像压缩与编码:包括如何对图像进行压缩和编码,以减小图像数据的存储空间和传输成本,常见的方法有离散余弦变换(DCT)、小波变换等。 4. 图像恢复与重建:包括如何对受损的图像进行修复和恢复,如去噪、去模糊等操作,以及如何通过图像插值、重建等方法生成高质量的图像。 5. 图像的分析与处理:包括如何对图像中的目标进行分析和处理,如图像分割、目标提取、形态学操作等,以实现图像的分析和图像处理的目的。 以上只是数字图像处理的一部分内容,educoder实训平台的答案可以帮助学习者理解和掌握这些知识,通过具体的实践和练习,提高他们的数字图像处理能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值