头哥实践教学平台 数据采集与处理技术 实训答案(一)

第一阶段 Numpy

练习1 :Numpy初体验

第1关:Numpy创建数组

任务描述
本关的小目标是,使用 Numpy 创建一个多维数组。

相关知识
在 Python 中创建数组有许多的方法,这里我们使用 Numpy 中的arange方法快速的新建一个数组:

import numpy as np
a = np.arange(5)
其中import numpy as np是指引入Numpy这个库,并取别名为np。之所以取别名,是为了代码编写的方便。a=np.arange(5)是指将数值0 1 2 3 4赋值给a这个变量,这样我们就快速的创建了一个一维数组。

创建多维数组的方法是:

import numpy as np
b = np.array([np.arange(6),np.arange(6)])
这里,我们使用两个arange方法,创建了两个1x6的一维数组,然后使用numpy的array方法,将两个一维数组组合成一个2x6的二维数组。从而达到了创建多维数组的目的。

numpy创建的数组可以直接复制,具体代码示例如下:

import numpy as np
x = [y for y in range(6)]
b=np.array([x]*4)
该段代码会创建一个4*6的数组。

# 引入numpy库
import numpy as np
# 定义cnmda函数
def cnmda(m,n):
    '''
    创建numpy数组
    参数:
           m:第一维的长度
           n: 第二维的长度
    返回值:
        ret: 一个numpy数组
    '''
    
    ret = 0
    
    # 请在此添加创建多维数组的代码并赋值给ret
    #********** Begin *********#
    b = np.arange(n);
    ret = np.array([b]*m) 
    #********** End **********#
    
    return ret

第2关:Numpy数组的基本运算

任务描述
本关的小目标是,学会Numpy二维数组的一些基本操作。

相关知识
Numpy库可以直接进行一些四则运算,快速的处理两个Numpy数组:

a = np.array([[1,2,3],[4,5,6]])
b = np.array([[4,5,6],[1,2,3]])

# 引入numpy库
import numpy as np
# 定义opeadd函数
def opeadd(m,b,n):
    '''
    参数:
    m:是一个数组
    b:是一个列表
    n:是列表中的索引
    你需要做的是 m+b[n]
    返回值:
    ret: 一个numpy数组
    '''    
    ret = 0

    #********** Begin *********#
    y = np.array(b[n])
    ret=np.add(m,y)
    '''ret=m+b[n]'''
      #********** End **********#

    return ret
# 定义opemul函数
def opemul(m,b,n):
    '''
    参数:
    m:是一个数组
    b:是一个列表
    n:是列表中的索引
    你需要做的是 m*b[n]
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0

    #********** Begin *********#
    x = np.array(b[n])
    ret = np.multiply(m,b[n])
    '''ret=m*b[n]'''
    #********** End **********#
    return ret

第3关:Numpy数组的切片与索引

任务描述
本关的小目标是,从数组中选择指定的元素。

相关知识
一维Numpy数组的切片操作与Python列表的切片一样。下面首先来定义数字0 1 2直到8的数组,然后通过指定下标3到7来选择数组的部分元素,这实际上就是提取数组中值为3到6的元素。

In: import numpy as np
In: a = np.arange(9)
In: a[3:7]
Out: array([3,4,5,6])

# 引入numpy库
import numpy as np
# 定义cnmda函数
def ce(a,m,n):
    '''
    参数:
    a:是一个Numpy数组
    m:是第m维数组的索引
    n:第m维数组的前n个元素的索引
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加切片的代码,实现找出多维数组a中第m个数组的前n个元素 并赋值给ret
    #********** Begin *********#
    y=np.array(a)
    ret=y[m,:n]
    #********** End **********#
    return ret

第4关:Numpy数组的堆叠

任务描述
本关的目标是,改变Numpy数组的形状。

相关知识
使用Numpy,我们可以方便的更改数组的形状,比如使用reshape()、ravel()、flatten()、transpose()函数等。
 

# 引入numpy库
import numpy as np
# 定义varray函数
def  varray(m,n):
    '''
    参数:
    m:是第一个数组
    n:是第二个数组
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加代码实现数组的垂直叠加并赋值给ret
    #********** Begin *********#
    ret=np.vstack((m,n))
    #********** End **********#
    return ret
# 定义darray函数
def  darray(m,n):
    '''
    参数:
    m:是第一个数组
    n:是第二个数组
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加代码实现数组的深度叠加并赋值给ret
    #********** Begin *********#
    ret=np.dstack((m,n))
    #********** End **********#
    return ret
 # 定义harray函数
def  harray(m,n):
    '''
    参数:
    m:是第一个数组
    n:是第二个数组
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加代码实现数组的水平叠加并赋值给ret
    #********** Begin *********#
    ret=np.hstack((m,n))
    #********** End **********#
    return ret

第5关:Numpy的拆分

任务描述
本关的目标是,对Numpy数组进行拆分。

相关知识
使用Numpy,我们可以方便的对数组进行拆分,比如使用hsplit()、vsplit()、dsplit()、split()函数等。

# 引入numpy库
import numpy as np
# 定义varray函数
def  vsarray(m,n):
    '''
    参数:
    m:是第一个数组
    n:是需要拆分到的维度
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加代码实现数组的纵向拆分并赋值给ret
    #********** Begin *********#
    ret=np.vsplit(m,n)
    #********** End **********#
    return ret
# 定义darray函数
def  dsarray(m,n):
    '''
    参数:
    m:是第一个数组
    n:是需要拆分到的维度
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加代码实现数组的深度拆分并赋值给ret
    #********** Begin *********#
    ret=np.dsplit(m,n)
    #********** End **********#
    return ret
 # 定义harray函数
def  hsarray(m,n):
    '''
    参数:
    m:是第一个数组
    n:是需要拆分到的维度
    返回值:
    ret: 一个numpy数组
    '''
    ret = 0
    # 请在此添加代码实现数组的水平拆分并赋值给ret
    #********** Begin *********#
    ret=np.hsplit(m,n)
    #********** End **********#
    return ret

练习2:NumPy数组的高级操作

第1关:堆叠操作

任务描述
本关任务:根据本关所学知识,实现均值统计功能。

相关知识
为了完成本关任务,你需要掌握stack的操作。

stack
stack的意思是堆叠的意思,所谓的堆叠就是将两个ndarray对象堆叠在一起组合成一个新的ndarray对象。根据堆叠的方向不同分为hstack以及vstack两种。

import numpy as np


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

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

任务描述
本关任务:编写一个能比较并筛选数据的程序。

相关知识
为了完成本关任务,你需要掌握:1. 如何对numpy进行比较运算;2. 如何使用逻辑数组。

比较
在许多情况下,数据集可能不完整或因无效数据的存在而受到污染。我们要基于某些准则来抽取、修改、计数或对一个数组中的值进行其他操作时,就需要掩码了。接下来将学习如何用 布尔掩码 来查看和操作数组中的值。

和算术运算符一样,比较运算符在numpy中也是通过通用函数来实现的。比较运算符和其对应的通用函数如下:

比较运算符                通用函数
        ==                      np.equal
        !=                    np.not_equal
        <                         np.less
        <=                  np.less_equal
        >                        np.greater
        >=                np.greater_equal

import numpy as np


def student(num,inpu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习的锅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值