Numpy入门教程:练习作业01
序言
什么是 NumPy 呢?
NumPy 这个词来源于两个单词 – Numerical
和Python
。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景:
- 执行各种数学任务,如:数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于 Python 的 MATLAB 的快速替代。
- 计算机中的图像表示为多维数字数组。NumPy 提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。
- 在编写机器学习算法时,需要对矩阵进行各种数值计算。如:矩阵乘法、求逆、换位、加法等。NumPy 数组用于存储训练数据和机器学习模型的参数。
练习作业
1. 创建从0到9的一维数字数组。
【知识点:数组的创建】
- 如何创建一维数组?
【答案】
import numpy as nparr = np.arange(10)
print(arr)
# [0 1 2 3 4 5 6 7 8 9]
2. 创建一个元素全为True
的 3×3 数组。
【知识点:数组的创建】
- 如何创建一个布尔数组?
【答案】
import numpy as nparr = np.full([3, 3], True, dtype=np.bool)
print(arr)
# [[ True True True]
# [ True True True]
# [ True True True]]
3. 从arr
中提取所有奇数。
arr = np.arange(10)
【知识点:搜索】
- 如何从一维数组中提取满足指定条件的元素?
【答案】
import numpy as nparr = np.arange(10)# 方法1
index = np.where(arr % 2 == 1)
print(arr[index])
# [1 3 5 7 9]# 方法2
x = arr[arr % 2 == 1]
print(x)
# [1 3 5 7 9]
4. 将arr
中的偶数元素替换为0。
arr = np.arange(10)
【知识点:搜索】
- 如何用numpy数组中的另一个值替换满足条件的元素项?
【答案】
import numpy as nparr = np.arange(10)
index = np.where(arr % 2 == 0)
arr[index] = 0
print(arr)
# [0 1 0 3 0 5 0 7 0 9]
5. 将 arr
中的所有偶数元素替换为0,而不改变arr。
arr = np.arange(10)
【知识点:搜索】
- 如何在不影响原始数组的情况下替换满足条件的元素项?
【答案】
import numpy as nparr = np.arange(10)# 方法1
x = np.where(arr % 2 == 0, 0, arr)
print(x)
# [0 1 0 3 0 5 0 7 0 9]
print(arr)
# [0 1 2 3 4 5 6 7 8 9]# 方法2
x = np.copy(arr)
x[x % 2 == 0] = 0
print(x)
# [0 1 0 3 0 5 0 7 0 9]
print(arr)
# [0 1 2 3 4 5 6 7 8 9]
6. 将 arr
转换为2行的2维数组。
arr = np.arange(10)
【知识点:数组的操作】
- 如何改变数组的形状?
【答案】
import numpy as nparr = np.arange(10)# 方法1
x = np.reshape(arr, newshape=[2, 5])
print(x)
# [[0 1 2 3 4]
# [5 6 7 8 9]]# 方法2
x = np.reshape(arr, newshape=[2, -1])
print(x)
# [[0 1 2 3 4]
# [5 6 7 8 9]]
7. 垂直堆叠数组a和数组b。
a = np.arange(10).reshape([2, -1])
b = np.repeat(1, 10).reshape([2, -1])
【知识点:数组操作】
- 如何垂直叠加两个数组?
【答案】
import numpy as npa = np.arange(10).reshape([2, -1])
b = np.repeat(1, 10).reshape([2, -1])print(a)
# [[0 1 2 3 4]
# [5 6 7 8 9]]
print(b)
# [[1 1 1 1 1]
# [1 1 1 1 1]]# 方法1
print(np.concatenate([a, b], axis=0))
# [[0 1 2 3 4]
# [5 6 7 8 9]
# [1 1 1 1 1]
# [1 1 1 1 1]]# 方法2
print(np.vstack([a, b]))
# [[0 1 2 3 4]
# [5 6 7 8 9]
# [1 1 1 1 1]
# [1 1 1 1 1]]
8. 将数组a与数组b水平堆叠。
a = np.arange(10).reshape([2, -1])
b = np.repeat(1, 10).reshape([2, -1])
【知识点:数组的操作】
- 如何水平叠加两个数组?
【答案】
import numpy as npa = np.arange(10).reshape([2, -1])
b = np.repeat(1, 10).reshape([2, -1])print(a)
# [[0 1 2 3 4]
# [5 6 7 8 9]]
print(b)
# [[1 1 1 1 1]
# [1 1 1 1 1]]# 方法1
print(np.concatenate([a, b], axis=1))
# [[0 1 2 3 4 1 1 1 1 1]
# [5 6 7 8 9 1 1 1 1 1]]# 方法2
print(np.hstack([a, b]))
# [[0 1 2 3 4 1 1 1 1 1]
# [5 6 7 8 9 1 1 1 1 1]]
9. 获取数组a和数组b之间的公共项。
a = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])
b = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])
【知识点:集合操作】
- 如何获取两个numpy数组之间的公共项?
【答案】
import numpy as npa = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])
b = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])
x = np.intersect1d(a, b)
print(x) # [2 4]
10. 从数组a中删除数组b中的所有项。
a = np.array([1, 2, 3, 4, 5])
b = np.array([5, 6, 7, 8, 9])
【知识点:集合操作】
- 如何从一个数组中删除存在于另一个数组中的项?
【答案】
import numpy as npa = np.array([1, 2, 3, 4, 5])
b = np.array([5, 6, 7, 8, 9])
x = np.setdiff1d(a, b)
print(x) # [1 2 3 4]
11. 获取a和b元素匹配的位置。
a = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])
b = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])
【知识点:逻辑函数】
- 如何得到两个数组元素匹配的位置?
【答案】
import numpy as npa = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])
b = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])
mask = np.equal(a, b)# 方法1
x = np.where(mask)
print(x) # (array([1, 3, 5, 7], dtype=int64),)# 方法2
x = np.nonzero(mask)
print(x) # (array([1, 3, 5, 7], dtype=int64),)
12. 获取5到10 之间的所有元素。
a = np.array([2, 6, 1, 9, 10, 3, 27])
【知识点:逻辑函数】
- 如何从numpy数组中提取给定范围内的所有元素?
【答案】
import numpy as npa = np.array([2, 6, 1, 9, 10, 3, 27])
mask = np.logical_and(np.greater_equal(a, 5), np.less_equal(a, 10))# 方法1
x = np.where(mask)
print(a[x]) # [ 6 9 10]# 方法2
x = np.nonzero(mask)
print(a[x]) # [ 6 9 10]# 方法3
x = a[np.logical_and(a >= 5, a <= 10)]
print(x) # [ 6 9 10]
13. 交换数组arr中的列1和列2。
arr = np.arange(9).reshape(3, 3)
【知识点:索引与切片】
- 如何交换二维数组中的两列?
【答案】
import numpy as nparr = np.arange(9).reshape(3, 3)
print(arr)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]x = arr[:, [2, 1, 0]]
print(x)
# [[2 1 0]
# [5 4 3]
# [8 7 6]]
14. 交换数组arr中的第1行和第2行。
arr = np.arange(9).reshape(3, 3)
【知识点:索引与切片】
- 如何交换二维数组中的两行?
【答案】
import numpy as nparr = np.arange(9).reshape(3, 3)
print(arr)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]x = arr[[1, 0, 2], :]
print(x)
# [[3 4 5]
# [0 1 2]
# [6 7 8]]
15. 反转二维数组arr的行。
arr = np.arange(9).reshape(3, 3)
【知识点:索引与切片】
- 如何反转二维数组的行?
【答案】
import numpy as nparr = np.arange(9).reshape(3, 3)
print(arr)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]x = arr[::-1, :]
print(x)
# [[6 7 8]
# [3 4 5]
# [0 1 2]]
16. 反转二维数组arr的列。
arr = np.arange(9).reshape(3, 3)
【知识点:索引与切片】
- 如何反转二维数组的列?
【答案】
import numpy as nparr = np.arange(9).reshape(3, 3)
print(arr)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]x = arr[:, ::-1]
print(x)
# [[2 1 0]
# [5 4 3]
# [8 7 6]]
17. 创建一个形为5×3的二维数组,以包含5到10之间的随机数。
【知识点:随机抽样】
- 如何创建随机二维数组?
【答案】
import numpy as npx = np.random.randint(5, 10, [5, 3])
print(x)
# [[5 8 8]
# [5 6 8]
# [8 8 7]
# [6 7 9]
# [6 5 8]]x = np.random.uniform(5, 10, [5, 3])
print(x)
# [[6.73675226 8.50271284 9.66526032]
# [9.42365472 7.56513263 7.86171898]
# [9.31718935 5.71579324 9.92067933]
# [8.90907128 8.05704153 6.0189007 ]
# [8.70753644 7.75056151 5.71714203]]
18. 只打印或显示numpy数组rand_arr的小数点后3位。
rand_arr = np.random.random([5, 3])
【知识点:输入和输出】
- 如何在numpy数组中只打印小数点后三位?
【答案】
import numpy as nprand_arr = np.random.random([5, 3])
print(rand_arr)
# [[0.33033427 0.05538836 0.05947305]
# [0.36199439 0.48844555 0.26309599]
# [0.05361816 0.71539075 0.60645637]
# [0.95000384 0.31424729 0.41032467]
# [0.36082793 0.50101268 0.6306832 ]]np.set_printoptions(precision=3)
print(rand_arr)
# [[0.33 0.055 0.059]
# [0.362 0.488 0.263]
# [0.054 0.715 0.606]
# [0.95 0.314 0.41 ]
# [0.361 0.501 0.631]]
19. 将numpy数组a中打印的项数限制为最多6个元素。
【知识点:输入和输出】
- 如何限制numpy数组输出中打印的项目数?
【答案】
import numpy as npa = np.arange(15)
print(a)
# [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
np.set_printoptions(threshold=6)
print(a)
# [ 0 1 2 ... 12 13 14]
20. 打印完整的numpy数组a而不中断。
【知识点:输入和输出】
- 如何打印完整的numpy数组而不中断?
【答案】
import numpy as npa = np.arange(15)
np.set_printoptions(threshold=6)
print(a)
# [ 0 1 2 ... 12 13 14]
np.set_printoptions(threshold=np.iinfo(np.int).max)
print(a)
# [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
当前活动
我是 终身学习者“老马”,一个长期践行“结伴式学习”理念的 中年大叔。
我崇尚分享,渴望成长,于2010年创立了“LSGO软件技术团队”,并加入了国内著名的开源组织“Datawhale”,也是“Dre@mtech”、“智能机器人研究中心”和“大数据与哲学社会科学实验室”的一员。
愿我们一起学习,一起进步,相互陪伴,共同成长。
后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:
Numpy入门教程:练习作业01相关推荐
- numpy 数组抽取_清晰易懂的Numpy入门教程
原标题:清晰易懂的Numpy入门教程 翻译 | 石头 来源 | Machine Learning Plus Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包,如数据分析工具pa ...
- python numpy教程_Python中的Numpy入门教程
这篇文章主要介绍了 Python 中的 Numpy 入门教程,着重讲解了矩阵中的数组操作 , 需要的 朋友可以参考下 1 . Numpy 是什么 很简单, Numpy 是 Python 的一个科学计算 ...
- 《Oracle 入门教程》第 01 篇 专栏介绍
文章目录 专栏背景 专栏内容 专栏寄语 大家好,我是只谈技术不剪发的 Tony 老师.欢迎来到我的专栏<Oracle 入门教程>!本专栏主要面向 Oracle 数据库的初学者,包括初级 D ...
- 《SQL 入门教程》第01篇 SQL 简介
<SQL 入门教程>专栏目录 第01篇 SQL 简介 第02篇 查询初体验 第03篇 查询条件 第04篇 结果排序 第05篇 限定结果数量 第06篇 分组与汇总 第07篇 多表连接查询 第 ...
- Numpy入门教程:练习作业02
背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python.其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执 ...
- Numpy入门教程:01. 数组的创建与属性
背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python.其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执 ...
- Numpy入门教程:12. 线性代数
背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python.其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执 ...
- Numpy入门教程:11. 时间日期和时间增量
序言 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python.其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执 ...
- Numpy入门教程:07. 随机抽样
背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python.其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执 ...
最新文章
- 【直播】张晋:心跳信号分类模型融合
- 京东618单日销售超10亿,B2C网购正成主流
- 压力测试即将开始,超前思维的128MB区块未必可行
- 应届生web前端面试题_2020最新Web前端经典面试题试题及答案(持续更新)
- jspServlet(2)
- catia齿轮宏程序_Catia宏程序
- (32)System Verilog模块调用包中类的方法
- 7年前的200电话卡帐号
- 63. windows php 加载不了 curl
- 关于[知识竞赛现场管理系统-双屏PPT版]内置的第三方答题平台以及[评委计分系统-双屏专业版]的特殊疑难问题 汇编
- java cronexpression_关于CronTrigger 的cronExpression用法
- html中复选框只能选一个,HTML选择三个不同的复选框并显示它们
- 查询iphone邮箱服务器,iPhone上的各种邮箱设置
- day16正则表达式作业
- 数据库Mysql:存储过程(PROCEDURE )函数(FUNCTION)
- xxm系统-DB中勒索病毒
- python 音频文件 转列表 比对相似度
- 微信小程序跳转公众号h5页面
- vue+springboot实现调用本地摄像头拍照上传后端使用百度ocr识别身份证信息
- 计算机系大一开学需要带什么,大一新生上学要不要带电脑?辅导员给出建议,家长可以参考...