NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。是在学习机器学习、深度学习之前应该掌握的一个非常基本且实用的Python库。
本实训将介绍 NumPy 的一些基础知识以及常用的一些基本功能。实训通关后您将学会 NumPy 的基础使用技能,并为后续的 进阶部分 与 综合练习部分打好基础。
PS:若需要更加详细的查阅NumPy所提供的接口,可以查阅 官方文档 。
编程要求
根据提示,在右侧编辑器Begin-End中填充代码,根据测试用例的输入,实例化出对应的ndarray对象并打印。
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
shape:为需要实例化出来的ndarray对象的shape;
data:表示需要实例化出来的ndarray对象中元素的值。
例如:{‘shape’:[1, 2], ‘data’:[[1, 2]]}表示ndarray对象的形状为1行2列,第1行第1列的值为1,第1行第2列的值为2。
测试输入:
{‘shape’:[1, 2], ‘data’:[[1, 2]]}
预期输出:
[[1 2]]
开始你的任务吧,祝你成功!
import numpy as np
def print_ndarray(input_data):
'''
实例化ndarray对象并打印
:param input_data: 测试用例,类型为字典类型
:return: None
'''
#********* Begin *********#
a = np.array(input_data['data'])
print(a)
#********* End *********#
编程要求
根据提示,在右侧编辑器Begin-End中填充代码,根据测试用例的输入,将列表转换成ndarray后变形成一维数组并将其打印。
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入:
[[1, 2, 3], [4, 5, 6]]
预期输出:
[1, 2, 3, 4, 5, 6]
import numpy as np
a = np.zeros((3, 4))
``````python
import numpy as np
a = np.zeros((3, 4))
``````python
import numpy as np
a = np.zeros((3, 4))
开始你的任务吧,祝你成功!
import numpy as np
def reshape_ndarray(input_data):
'''
将ipnut_data转换成ndarray后将其变形成一位数组并打印
:param input_data: 测试用例,类型为list
:return: None
'''
#********* Begin *********#
after_reshape = np.array(input_data).reshape(-1)
print(after_reshape)
#********* End *********#
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,根据测试用例的输入,打印每行的最大值的位置。
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入:
[[0.2, 0.7, 0.1], [0.1, 0.3, 0.6]]
预期输出:
[1 2]
开始你的任务吧,祝你成功!
import numpy as np
def get_answer(input_data):
'''
将input_data转换成ndarray后统计每一行中最大值的位置并打印
:param input_data: 测试用例,类型为list
:return: None
'''
#********* Begin *********#
print(np.array(input_data).argmax(axis = 1))
#********* End *********#
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,将测试用例输入打乱顺序并返回打乱结果。
具体要求请参见后续测试样例。
注意:评测程序内部已经设置好了随机种子,为了顺利评测,请使用np.random.choice()函数来实现打乱顺序。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入:
[1, 2, 3, 4, 5, 6]
预期输出:
[4, 3, 5, 1, 2, 6]
开始你的任务吧,祝你成功!
import numpy as np
def shuffle(input_data):
'''
打乱input_data并返回打乱结果
:param input_data: 测试用例输入,类型为list
:return: result,类型为list
'''
# 保存打乱的结果
result = []
#********* Begin *********#
result = list(np.random.choice(a=input_data,size=len(input_data),replace=False))
#********* End *********#
return result
编程要求
在图像处理中,我们通常会将我们感兴趣的区域提取出来再进行处理,而这个感兴趣区域成为ROI(Region Of Interest)。本关的任务是根据提示,在右侧编辑器Begin-End处补充代码,根据测试用例的输入将ROI的提取并返回(ROI是一个矩阵)。
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试。你只需按要求完成get_roi(data, x, y, w, h)函数即可。其中:
data:待提取ROI的原始图像数据(其实就是个二维数组),类型为ndarray;
x: ROI的左上角顶点的行索引,类型为int;
y: ROI的左上角顶点的列索引,类型为int;
w: ROI的宽,类型为int;
h: ROI的高,类型为int。
测试用例是一个字典,字典中image部分表示原始图像的像素数据,x部分表示ROI的左上角顶点的行索引,y部分表示ROI的左上角顶点的列索引,w部分表示ROI的宽,h部分表示ROI的高。
测试输入:
{‘image’:[[1, 2, 255, 255, 0], [255, 255, 0, 0, 3]], ‘x’:0, ‘y’:1, ‘w’:2, ‘h’:1}
预期输出:
[[ 2 255 255] [255 0 0]]
开始你的任务吧,祝你成功!
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 *********#
b = data[x:x+h+1,y:y+w+1]
return b
#********* End *********#