NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。是在学习机器学习、深度学习之前应该掌握的一个非常基本且实用的Python库。
本实训将介绍 NumPy 的一些更高级的知识与使用方法。实训通关后你将学会 NumPy 的进阶使用技能,并为后续的综合练习部分打好基础。如果你对NumPy的基础知识不熟,可以看看这里。
PS:若需要更加详细的查阅NumPy所提供的接口,可以查阅官方文档。
第1关:堆叠操作
编程要求
根据本关所学知识,补充完成get_mean(featur1, feature2)函数,其中:
feature1:待hstack的ndarray;
feature2:待hstack的ndarray;
返回值:类型为ndarray,其中值为hstack后每列的平均值;
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试。你只需按要求完成函数即可。
测试用例输入是一个字典,feature1部分代表函数中的feature1,feature2部分代表函数中的feature2。
测试输入:
{‘feature1’:[[1, 2, 3, 4], [4, 3, 2, 1], [2, 3, 4, 5]], ‘feature2’:[[1], [2], [3]]}
预期输出:
[2.33333333 2.66666667 3. 3.33333333 2. ]
开始你的任务吧,祝你成功!
import numpy as np
def get_mean(feature1, feature2):
'''
将feature1和feature2横向拼接,然后统计拼接后的ndarray中每列的均值
:param feature1:待`hstack`的`ndarray`
:param feature2:待`hstack`的`ndarray`
:return:类型为`ndarray`,其中的值`hstack`后每列的均值
'''
#********* Begin *********#
feature3 = np.hstack((feature1,feature2))
return feature3.mean(axis = 0)
#********* End *********#
第2关:比较、掩码和布尔逻辑
编程要求
请在右侧编辑器Begin-End处补充代码,根据输入的数据筛选出大于num的值。
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入:
[[ 3 ,15, 9 ,11 , 7],[ 2, 0 , 8, 19 ,16],[ 6 , 6, 16 , 9, 5],[ 7 , 5 , 2 , 6 ,13]] 10
预期输出:
[15 11 19 16 16 13]
开始你的任务吧,祝你成功!
import numpy as np
def student(num,input_data):
result=[]
# ********* Begin *********#
a = np.array(input_data)
result = a[a > num]
# ********* End *********#
return result
第3关:花式索引与布尔索引
编程要求
请在右侧编辑器Begin-End处补充代码,根据函数参数input_data过滤出所有的大写字母。
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入:
[“d”,“a”,“A”,“p”,“b”,“I”,“C”,“K”]
预期输出:
[‘A’ ‘I’ ‘C’ ‘K’]
开始你的任务吧,祝你成功!
import numpy as np
def student(input_data):
result=[]
#********* Begin *********#
d = np.array(input_data)
result = d[(d >= 'A') & (d <= 'Z')]
# ********* End *********#
return result
第4关:广播机制
编程要求
请在右侧编辑器Begin-End处补充代码,将输入数据转换为array并计算它们的和。
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入:
[[9, 3, 1], [7, 0, 6], [4, 6, 3]] [1, 5, 9] [[9], [6], [7]]
预期输出:
[[19 17 19]
[14 11 21]
[12 18 19]]
开始你的任务吧,祝你成功!
import numpy as np
def student(a,b,c):
result=[]
# ********* Begin *********#
a = np.array(a)
b = np.array(b)
c = np.array(c)
result = a + b + c
# ********* End *********#
return result
第5关:线性代数
编程要求
请在右侧编辑器Begin-End处补充代码,计算性别为男的线性方程解,前两个数为方程左边,最后一个数为方程右边。
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入:
[[“男”,2,4,40],[“女”,8,3,17],[“男”,8,6,24]]
预期输出:
[[-7.2]
[13.6]]
提示:测试数据的方程为2x+4y=40,8x+6y=24。
开始你的任务吧,祝你成功!
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