逻辑运算| 学习笔记

简介: 快速学习逻辑运算

开发者学堂课程【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)

相关文章
|
5月前
|
程序员 C++
10关系运算和逻辑运算
10关系运算和逻辑运算
33 0
|
5月前
|
C++
C++程序中的逻辑运算
C++程序中的逻辑运算
42 1
|
4月前
数字逻辑与模拟电子技术-部分知识点(3)——数电部分-基本逻辑运算、复合逻辑运算
数字逻辑与模拟电子技术-部分知识点(3)——数电部分-基本逻辑运算、复合逻辑运算
66 0
|
5月前
1-3 逻辑运算
1-3 逻辑运算
27 0
异或运算符简单逻辑运算 a^=b
异或运算符简单逻辑运算 a^=b
115 0
|
PHP 开发者
比较运算| 学习笔记
快速学习比较运算。
150 0
比较运算| 学习笔记
算数运算
算数运算
126 0
|
PHP 开发者
逻辑运算| 学习笔记
快速学习逻辑运算。
|
开发者 Python
逻辑运算的使用 | 学习笔记
快速学习 逻辑运算的使用
|
开发者
算术运算| 学习笔记
快速学习算术运算。