首页 > 其他分享 >Numpy入门学习笔记

Numpy入门学习笔记

时间:2024-12-10 15:54:29浏览次数:4  
标签:10 入门 元素 50 笔记 np 数组 print Numpy

此篇文章在2022年10月21日被记录
Numpy简单应用
============

创建一个一维数组

a = np.array([0, 1, 2, 3, 4])
b = np.array((0, 1, 2, 3, 4))
c = np.arange(5)
d = np.linspace(0, 2*np.pi, 5)

print(a)  >>>[0 1 2 3 4]
print(b)  >>>[0 1 2 3 4]
print(c)  >>>[0 1 2 3 4]
print(d)  >>>[ 0. 1.57079633  3.14159265  4.71238898  6.28318531]
print(a[3])  >>>3

创建一个二维数组

a = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28 ,29, 30],
              [31, 32, 33, 34, 35]])
print(a[2,4]) # >>>25

数组切片

print(a[0, 1:4]) # >>>[12 13 14]
print(a[1:4, 0]) # >>>[16 21 26]
print(a[::2,::2]) # >>>[[11 13 15]  间隔索引为2
                  #     [21 23 25]
                  #     [31 33 35]]
print(a[:, 1]) # >>>[12 17 22 27 32]

查看数组属性

a = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28 ,29, 30],
              [31, 32, 33, 34, 35]])

print(type(a)) # >>><class 'numpy.ndarray'>
print(a.dtype) # >>>int64
print(a.size) # >>>25
print(a.shape) # >>>(5, 5) 形状
print(a.itemsize) # >>>8 每个元素占用的字节
print(a.ndim) # >>>2
print(a.nbytes) # >>>200 总共占用多少个字节

数组操作

a = np.arange(25)
a = a.reshape((5, 5))
b = np.array([10, 62, 1, 14, 2, 56, 79, 2, 1, 45,
              4, 92, 5, 55, 63, 43, 35, 6, 53, 24,
              56, 3, 56, 44, 78])
b = b.reshape((5,5))
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a ** 2)
print(a < b) 在后面的布尔屏蔽很有用
print(a > b)
print(a.dot(b))
除了 dot() 之外,这些操作符都是对数组进行逐元素运算。比如 (a, b, c) + (d, e, f) 的结果就是 (a+d, b+e, c+f)。它将分别对每一个元素进行配对,然后对它们进行运算。它返回的结果是一个数组。注意,当使用逻辑运算符比如 “<” 和 “>” 的时候,返回的将是一个布尔型数组,这点有一个很好的用处
dot() 函数计算两个数组的点积。它返回的是一个标量(只有大小没有方向的一个值)而不是数组。

数组特殊运算符

a = np.arange(10)

print(a.sum()) # >>>45
print(a.min()) # >>>0
print(a.max()) # >>>9
print(a.cumsum()) # >>>[ 0  1  3  6 10 15 21 28 36 45]
sum()、min()和max()函数的作用非常明显。将所有元素相加,找出最小和最大元素。

然而,cumsum()函数就不那么明显了。它将像sum()这样的每个元素相加,但是它首先将第一个元素和第二个元素相加,并将计算结果存储在一个列表中,然后将该结果添加到第三个元素中,然后再将该结果存储在一个列表中。这将对数组中的所有元素执行此操作,并返回作为列表的数组之和的运行总数。

索引进阶、花式索引

a = np.arange(0, 100, 10)
indices = [1, 5, -1]
b = a[indices]
print(a) # >>>[ 0 10 20 30 40 50 60 70 80 90]
print(b) # >>>[10 50 90]

布尔屏蔽

import matplotlib.pyplot as plt

a = np.linspace(0, 2 * np.pi, 50)
b = np.sin(a)
plt.plot(a,b)
mask = b >= 0
plt.plot(a[mask], b[mask], 'bo')
mask = (b >= 0) & (a <= np.pi / 2)
plt.plot(a[mask], b[mask], 'go')
plt.show()
上面的示例显示了如何进行布尔屏蔽。你所要做的就是将数组传递给涉及数组的条件,它将为你提供一个值的数组,为该条件返回true。

缺省索引

不完全索引是从多维数组的第一个维度获取索引或切片的一种方便方法。例如,如果数组a=[1,2,3,4,5],[6,7,8,9,10],那么[3]将在数组的第一个维度中给出索引为3的元素,这里是值4。
# Incomplete Indexing
a = np.arange(0, 100, 10)
b = a[:5]
c = a[a >= 50]
print(b) # >>>[ 0 10 20 30 40]
print(c) # >>>[50 60 70 80 90]

where函数

where() 函数是另外一个根据条件返回数组中的值的有效方法。只需要把条件传递给它,它就会返回一个使得条件为真的元素的列表。
# Where
a = np.arange(0, 100, 10)
b = np.where(a < 50) 
c = np.where(a >= 50)[0]
print(b) # >>>(array([0, 1, 2, 3, 4]),)
print(c) # >>>[5 6 7 8 9]

标签:10,入门,元素,50,笔记,np,数组,print,Numpy
From: https://www.cnblogs.com/shumei52/p/18597514

相关文章

  • markdown笔记
    1标题(六级)一级二级三级四级五级六级2引用这是一段引用3列表3.1有序列表把大象放进冰箱:打开冰箱把大象放进去关上冰箱3.2无序列表阿姆斯特丹加加林汤姆斯3.3任务列表明天要做的事-[]吃饭-[]睡觉-[]打豆豆......
  • STM32低功耗入门
    此篇文章在2022年5月19日被记录STM32低功耗介绍:STM32L4系列单片机总共有9中低功耗模式:1、Sleepmode:CPU时钟关闭,IO口保持与运行状态相同的状态。可由wake事件,NVIC,SysTick,外部中断等,无唤醒时间,唤醒后执行唤醒源中断回调函数(和标准库中断服务函数功能一样,但意义不同),然后按原来......
  • 阿里大牛强力推荐:springboot实战派文档,从入门到实战,样样具备
    前言对于大部分普通家庭的孩子来说,IT行业是一个单靠个人或者团队能力就能“最快实现人生小目标”的行业。所以,如果这本文可以帮助读者学会精通SpringBoot,并且能够进入一线大厂不断学习丰富自己的人生,那本文的价值就很大了。本文基于SpringBoot2.X版本,采用“知识点......
  • 阿里巴巴全彩版“SpringCloudAlibaba 学习笔记”开源
    SpringCloudAlibaba为什么会出现?SpringCloudNetflix项目进入维护模式,SpringCloudNetflix将不再开发新的组件,我们知道SpringCloud版本迭代算是比较快的,因而出现了很多中岛的ISSUE都来不及Fix就又推另一个Release了。进入维护模式意思就是目前已知以后一段时......
  • Android笔记【20】利用Log来debug
    一、背景    在利用青云课API写聊天软件时,由于自己ui界面的column高度设计不当,导致没有看见下面的TextField,便没有输入信息,于是lazycolumn里面的messages.size为0,故不会显示内容。本人还以为无法运行到column内部,且在用text测试时由于两次text内容一致,在Box里面重叠,更......
  • 软件测试笔记|web自动化测试|你们是怎么处理弹窗的?
    VX公众Hao:阳哥整理软件测试笔记 在自动化测试中,常见的弹窗有警告框(alert)、确认框(confirm)和提示框(prompt)。以Selenium为例,处理方式如下:处理警告框(Alert)1.首先使用driver.switch_to.alert切换到警告框。2.可以使用accept方法来接受警告框(相当于点击“确定”按钮),示例代码......
  • 软件测试笔记|web自动化测试|自动化测试中,句柄是如何切换的?
    VX公众Hao:阳哥整理软件测试笔记 在Web自动化测试中,当页面打开新窗口或者切换到新的iframe时,就需要进行句柄切换来定位新页面或框架中的元素。以Selenium为例:窗口句柄切换1.首先,使用driver.current_window_handle获取当前窗口句柄。2.然后,打开新窗口后(例如点击一个链接......
  • 软件测试笔记|数据库基础|通过python,如何导入数据库,并使用数据库表数据?
    VX公众Hao:阳哥整理软件测试笔记 以下是使用Python操作常见数据库(以MySQL为例)的基本步骤:首先,需要安装对应的数据库驱动程序。对于MySQL,通常使用pymysql库。可以通过pipinstallpymysql命令安装。1.连接数据库importpymysql#建立连接conn=pymysql.connect(  ......
  • 软件测试笔记|数据库基础|数据库字段类型有哪些?char与varchar有什么区别?
    VX公众Hao:阳哥整理软件测试笔记 常见的数据库字段类型有以下几种:•数值型:•整数型:如TINYINT、SMALLINT、INT、BIGINT,分别用于存储不同范围的整数值。•浮点型:像FLOAT、DOUBLE,用于存储带有小数部分的数值。•字符型:•定长字符串:如CHAR,存储固定长度的字符数据。•......
  • 笔记本硬盘数据恢复
    一、基础恢复方法撤销恢复:如果刚刚删除了文件,可以尝试使用撤销键【Ctrl+Z】来取消之前的删除操作。回收站恢复:检查回收站,找到已删除的数据,右键单击并选择“还原”。这种方法适用于意外删除且未清空回收站的情况。文件历史记录恢复:如果之前启用了文件历史记录功能,可以进入“......