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”、“智能机器人研究中心”和“大数据与哲学社会科学实验室”的一员。
愿我们一起学习,一起进步,相互陪伴,共同成长。
后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:
相关文章:

转乱码UTF8和UTF-8网页编码
http://www.lovelucy.info/utf8-vs-utf-8.html#more-794 一、遇到的问题 曾经被字符集间复杂的转换搞怕了,正好新项目要求国际化,需要能够显示多种语言,于是一开始就规定统统使用 UTF-8 编码。 所有代码文件使用 UTF-8 编码存盘MySQL数据库所…

linux管道的执行顺序
最近有个疑问,netstat -antup|head -500 类似这条命令中,是netstat 执行完然后截取前500条记录还是,netstat 与head 并行执行,netstat 执行完500条就不再继续? 最终答案由酷学园darkdanger大大提供: 唔…

为什么学习Python数据分析
为什么学习Python数据分析?这是很多人都比较关注的一个问题,Python编程语言近几年在互联网行业是非常火爆的,尤其是在人工智能这一领域,它会大大的提高我们的工作效率等等,具体来看看下面的详细介绍就知道了。 为什么学习Python数…

Python自动化开发学习6
引子 假设我们要在我们的程序里表示狗,狗有如下属性:名字、品种、颜色。那么可以先定义一个模板,然后调用这个模板生成各种狗。 def dog(name,d_type,color):data {name:name,d_type:d_type,color:color}return data d1 dog(小七,拉布拉多,…

Numpy入门教程:09. 输入和输出
背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执行各种数学任务,如:数值积分、微分、…

第二语言综合征
前些天在看一本书,温伯格的《理解专业程序员》,其中提到有的程序员得了第二语言综合征——在学习第三、第四门语言的时候很容易,但是学习第二门简直能要了他们的命。我当时就确定我患了这个毛病,因为我一直想了解Java语言…

Python文件操作:finally子句的使用
finally子句与try-except语句连用时,无论try-except是否捕获到异常,finally子句后的代码都要执行,其语法格式如下: try: 可能出错的语句 ......except: 出错后的执行语句finally: 无论是否出错都会执行的语句 Python在处理文件时&…

Numpy入门教程:练习作业02
背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执行各种数学任务,如:数值积分、微分、…

PowerShell 导入 SQL Server 的 PS 模块
接触过UNIX或者Linux 的朋友都知道此类系统有着功能强大、无所不能的壳程序,称之为Shell。微软公司于2006年第四季度正式发布PowerShell,它的出现标志着, 微软公司向服务器领域迈出了重要的一步, 不仅提供简便的图形化操作界面,同时提供类似于Unix, Linu…

ARM嵌入式操作系统启动
任何一个操作系统的启动都至少关注两个方面:1,程序运行栈的初始化。2,处理器外设的初始化。 在ARMv6以及以前的体系结构中,定义了七种模式分别为&…

Html5 aside标签的用法和作用
aside元素用来定义当前页面或者文章的附属信息部分,它可以包含与当前页面或主要内容相关的引用、侧边栏、广告、导航条等其他类似的有别于主要内容的部分。 aside元素的用法主要分为两种。 ● 被包含在article元素内作为主要内容的附属信息。 ● 在article元素之外使…

Numpy入门教程:10. 统计相关
背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执行各种数学任务,如:数值积分、微分、…

Windows 7+Code::Blocks+wxWidgets实录(一)
环境配置篇 玩过Linux的人应该对Code::Blocks和wxWidgets并不陌生。 Code::Blocks是一款非常有名的代码编辑器,在linux下用不惯vim的话,这是个不错的选择。但千万不要把它和编译器混淆,CB本身并没有独立编译程序的功能,需要调用系…

技巧:两部解决U盘安装windows 7
第一步:准备一个4G的U盘并使用disk part 工具制作成引导盘1、在运行中输入cmd 回车2、在黑色的命令提示符界面中输入Diskpart3、插入U盘 并输入List Disk查看4、输入Select Disk 1 (选择你的U盘所在的标识)5、输入clean 清除旧的信息6、输入c…

报Java面授班有哪些优势
java技术在互联网行业的高速发展,让很多人都开始学习java技术,大家都想知道学习java技术面授班好还是网络班好,小编觉得当然是面授班比较好,下面小编就带大家来详细的了解一下报Java面授班有哪些优势? 报Java面授班有哪…

刻意练习:Python基础 -- Task13. datetime模块详解
datetime模块 datetime 是 Python 中处理日期的标准模块,它提供了 4 种对日期和时间进行处理的类:datetime、date、time 和 timedelta。 datetime类 class datetime(date):def __init__(self, year, month, day, hour, minute, second, microsecond, t…

关于java和c的选择结构和循环结构
java和c在这些结构上确实没区别。 另学会一个小技巧,在编辑界面选中段落之后按tab可以整体后移选中的段落,再按shifttab可以将选中的段落前移。转载于:https://www.cnblogs.com/hloli/archive/2012/03/15/2398675.html

从控制器到驱动器的WD——硬盘巨头启示录之西数篇
WD(Western Digital,西部数据)公司创立的时间比希捷公司还早近10年,但作为硬盘驱动器供应商的历史可不算长。1970年4月23日,一家名为General Digital(通用数字)的公司诞生了,其最初是…

java程序员入门先学什么开发者工具
学习java编程语言,那么开发工具是肯定少不了的,程序员入门基础中开发工具是一定要学会的,可以帮助开发者们提高开发效率、更优雅的写代码。由于开发者涉及的技术领域众多,以后端开发者的视角盘点平时可能用得到的工具,…

Numpy入门教程:11. 时间日期和时间增量
序言 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执行各种数学任务,如:数值积分、微分、…

C#事件的发送方和接收方(订阅方)
C#事件的发送方和接收方(订阅方)基于Windows的应用程序也是基于消息的,Windows使用预定义消息与应用程序通讯。.NET Framework将Windows消息封装在事件中,可以把事件作为对象之间的通讯介质。事件发送方:发送事件的对象…

后台管理界面模版
http://www.cssmoban.com/cssthemes/houtaimoban/index_3.shtml转载于:https://www.cnblogs.com/hellojesson/p/7805516.html

选择PMP培训学校需要注意哪些
选择PMP培训学校需要注意哪些?如今各大职场对于项目管理这个岗位都是非常有需求的,有需求就有市场,PMP培训相关证书在市面上频繁出现,想要选择PMP培训学校需要注意哪些呢?来看看下面的详细介绍。 首先,我们来详细的了解一下什么…

绝对实用 NAT + VLAN +ACL管理企业网络
在企业中,要实现所有的员工都能与互联网进行通信,每个人各使用一个公网地址是很不现实的。一般,企业有1个或几个公网地址,而企业有几十、几百个员工。要想让所有的员工使用这仅有的几个公网地址与互联网通信该怎么做呢?…

javascript 常用功能總結
1.路径符号的含义 src"/js/jquery.js"、"../"这个斜杠是绝对路径的意思,表示的是网站根目录. 其他的如"./ " 、 "../" 、 "jquery.js" 、 "js/jquery.js"等等表示的都是相对当前网页的路径,…

学习资源:在线学习 Python(一)
背景 Python 是一种通用编程语言,其在科学计算和机器学习领域具有广泛的应用。如果我们打算利用 Python 来执行机器学习的代码,那么对 Python 有一些基本的了解就是至关重要的。 如果我们希望熟悉 Python 基本语法结构,但不希望在本地安装I…

什么BRIEF算法?BRIEF算法详解
BRIEF是一种特征描述子提取算法,并非特征点的提取算法,一种生成二值化描述子的算法,不提取代价低,匹配只需要使用简单的汉明距离(Hamming Distance)利用比特之间的异或操作就可以完成。因此,时间代价低,空间…

OpenLayers 动态添加标记(Marker)和信息窗(Popup)
方式一:使用marker方式 1、在地图上添加标记图层 var markers newOpenLayers.Layer.Markers("Markers"); map.addLayer(markers);//地图初始化添加 2、动态添加标记和Popup方法: //add map initial methodmap.events.register(click, this, fu…
Bag标签之中的一个行代码实行中文分词实例2
例1: 分词(返回以逗号隔开每一个词带上引號的词组。gap",",quotes""或quotes") 单引號 <bag idpPage act2words namewords gap"," quotes"">我喜欢黄色高领T恤衫</bag>…

学习资源:在线学习 Python(二)
背景 Python 是一种通用编程语言,其在科学计算和机器学习领域具有广泛的应用。如果我们打算利用 Python 来执行机器学习的代码,那么对 Python 有一些基本的了解就是至关重要的。 如果我们希望熟悉 Python 基本语法结构,但不希望在本地安装I…