逻辑运算| 学习笔记

简介: 快速学习逻辑运算

开发者学堂课程【Python 科学计算库 NumPy 快速入门逻辑运算学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/605/detail/8821


逻辑运算


内容简介:

一、布尔索引

二、通用判断函数

三、np.where(三元运算符)


一、布尔索引

#重新生成8只股票10个交易日的涨跌幅数据

>>>  stock_ change = np. random. normal(0, 1, (8, 10))

>>>  stock_ change = stock_ change[0:5, 0:5]

#逻辑判断,如果涨跌幅大于0. 5就标记为 True 否则为 False

>>>  stock_ change > 0.5

array([[True, False, False, True, False],

[ True,True, False, False, Falsel,

[ True, False, True, False,True],

[False,True, False, False, False],

[False, False, False,True,True]])

# B00L 赋值, 将满足条件的设置为指定的值-布尔索引

>>  stock_ change [stock_ change > 0.5] = 1

array([[1.       , -0.72404879, -1.33045773, 1.         ,   0.3869043 ]

[ 1.       ,1.          ,0.20815446,  -1. 67860823,  0.06612823] ,

[1.       , 0.42753488, 1.       , -0.24375089,    1.        ],

[-0.971945, 1.         , -0.95444661, -0.2602084 ,   -0.48736497] ,

[-0.32183056, -0. 92544956, -0. 42126604, 1.      ,   1.        ]])

In [97J:#逻辑判断,如果涨跌幅大>0.5就标记为 True 否则为 False

布尔索引:

1、In [98]: stock_ change[stock_ change > 0.5]Out[98]: array([1.46338968, 0.83167611, 1.38319911, 1.19314047, 1.34072589,

1.19030379, I .4371421 , 0.91122464, 0. 79542753, 1.7344868,

1.37510973, 0.57335311, 0.97390091, 0.84445247, 0. 86546709,

0.52007085, 0.57108639, 1.03303301, 1.04716985, 0. 87722923.

0.56273065, 0.88443604])


二、通用判断函数

(1)np.all(布尔值)

只要有一个 False 就返回 False,只有全是 True 才返回 True

#判断 stock_ .change[0:2, 0:5]是否全是上涨的

>>> np.all(stock_ change[0:2, 0:5] > 0)

False

In[102]:# 判断 stock_ change[0:2, 0:5]是否全是上涨的

stock_ change[0:2, 0:5] > 0

Out[102]: array([[True, False,True,True,True],

[ True,True,True,True,True] ])

In [103] :np.all( stock_ change(0:2. 0:5] > 0)

Out[103]: False

(2)np. any()只要有一个 True 就返回 True,只有全是 False 才返回 False|

#判断前5只股票这段期间是否有上涨的

>>> np. any(stock change[0:5, :] > 0 )

True

In [107] :#判断前5只股票这段期间是否有上涨的

np. any(stock_ change[:5, -] > 0)

Out[ 107] :True


三、np.where(三元运算符)

np. where(布尔值,True 的位置的值,False 的位 置的值)

通过使用 np.where 能够进行更加复杂的运算

●np.where()

#判断前四个股票前四天的涨跌幅大于0的置为1, 否则为0

temp = stock_ change[:4, :4]

np. where(temp> 0, 1, 0)

例子:

In [108]: # 判断前四个股票前四天的涨跌幅 大于0的置为1,否则为0

temp = stock_change[:4, :4]

In [111]: temp

Out[111]: array([[1.1       , -0.45576704, 0.29667843, 0.16606916] ,

[0.36775845, 0. 24078108,  0.122042 , 1.1        ],

[-1.48252741, -0.69347186, 1.1      , -0.30606473],

[ 0.39438905, -1.31770556, 1.1       ,-1.52812773]])

In [110]: np.where(temp > 0, 1, 0)

Out[110]: array([[1, 0, 1, 1],

[1, 1, 1, 1],

[0,0,1,0],

[1,0,1,0]])

In[112]:temp>0

Out[112]: array([[ True, False, True,True],

[True, True, True,True] ,

[False, False, True, False],

[ True, False, True, False]])  

In [ ]: np·where([[True, False, True, True],

[True, True, True, True],

[False, False, True, False],

[True, False, True, False]], )  

In (113]: np.where([[ True, False, True, True],

[True,True, True, True] ,

[False, False, True, False],

[True, False, True, False]], 1, 0)

Out[113]: array([[1, 0, 1, 1],

[1, 1, 1, 1],

[0,0,1,0],

[1, 0, 1, 0]])

复合逻辑需要结合 np.logical_and 和 np.logical_or 使用

#判断前四个股票前四天的涨跌幅大于0.5并且小于1的,换为1,否则为0

例子:In[117]:#判断前四个股票前四天的涨跌幅大于0.5并且小于1的,换为1,否则为0

#(temp > 0.5) and (temp < 1 )

np.logical and(temp > 0.5, temp < 1)

Out[117]: array([[False, False, False, False],

[False, False, False, Fa1se],

[Fa1se, False, False, False],

[False, False, False, False]])

In [119]: np.where([[False, False, False, Fa1se],

[False, False, False, False],

[False, False, False, False],

[False, False, False, False]], 1, 0)

Out[119]: array([[0, 0, 0, 0],

[0, 0, 0, 0],

[0, 0, 0, 0]])

In [120]: np.where(np.logical and(temp > 0.5, temp < 2), 1, 0)

Out[120]:array([[0,0,0,0],

[0,0,0,0],

[0,0,0,0]

[0, 0, 0, 0]])

#判断前四个股票前四天的涨跌幅大于0.5或者小于-0.5的,换为1,否则为0

np.where(np. logical_ and(temp > 0.5, temp < 1), 1, 0)

np.where(np. Logical_or(temp > 0.5, temp < -0.5), 1, 0)

相关文章
|
9月前
|
人工智能 自然语言处理 搜索推荐
智能语音助手的发展与未来:开启人机交互的新篇章
智能语音助手的发展与未来:开启人机交互的新篇章
1541 28
|
关系型数据库 数据库 开发者
Python中的Peewee框架:轻量级ORM的优雅之旅
【4月更文挑战第13天】在Python的众多ORM框架中,Peewee以其轻量级、简洁和易于上手的特点,受到了许多开发者的青睐。Peewee的设计理念是“小而美”,它提供了基本的ORM功能,同时保持了代码的清晰和高效。本文将深入探讨Peewee的核心概念、使用场景以及实战应用,帮助读者更好地理解和使用这一框架。
|
存储 容灾 算法
分布式数据库,基于Paxos多副本的两地三中心架构
2023年10月份的杭州云栖大会,围绕PolarDB-X分布式数据库,面向大型金融机构核心系统数据库改造实践做了一次技术分享《2023云栖大会-聚合话题:数智金融 数字金融核心技术硬核实践》,介绍了PolarDB-X分布式数据库在大型银行、股份制银行、证券系统、保险业务等场景落地的总结。
|
Java 开发者 数据安全/隐私保护
spring-data-jpa Repository的基本知识
1.项目中的Repository对象的使用   2.Repository 引入的两种方式    继承和使用注解 3.Repository接口的定义 Repository 接口是 spring Data 的一个核心接口,它不提供任何方法,开发者需要在自己定义的接口中声明需要的方法 public interface Repository { }   4.Repository接口的层级关系     基础的 Repository 提供了最基本的数据访问功能,其几个子接口则扩展了一些功能。
1019 0
|
5天前
|
人工智能 运维 安全
|
3天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
10天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
839 109