吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1704|回复: 0
收起左侧

[Python 转载] 【笔记】python数据分析——条件逻辑运算

  [复制链接]
qianshang666 发表于 2021-3-10 19:33

往期数据分析笔记

【笔记】python数据分析——numpy初识1
【笔记】python数据分析——numpy初识2
【笔记】python数据分析——变换与编程中的轴
【笔记】python数据分析——numpy随机数函数
【笔记】python数据分析——numpy数组索引及切片
【笔记】python数据分析——元素级运算及通用函数

条件逻辑运算

import numpy as np

arr1=np.array([1,2,3,4])
arr2=np.array([5,6,7,8])
arr3=np.array([True,False,True,False])

上面我定义了三个数组,但我想实现这样的一个想法:
当arr3中的值为True的时候,我们取出arr1中的数字
当arr3中的值为False的时候,我们取出arr2中的数字
最后我们要实现的应该就是取出1,6,3,8这四个数

花式索引方法

如果掌握了numpy数组索引及切片中的花式索引的话,应该是有思路的

print(arr1[arr3==True])
print(arr2[arr3==False])

运行结果:
[1 3]
[6 8]
但这个是两个数组呀,我希望它是同一个数组,可能又有对numpy数组的变换掌握的兄弟想将两个数组进行合并,我们可以试试

arr11 = arr1[arr3==True]
arr22 = arr2[arr3==False]
arr33 = np.concatenate([arr11,arr22])
print(arr33)

运行结果:
[1, 6, 3, 8]

where(类似python中的if...else)

我们使用where来实现我们上面想要的数据

print(np.where(arr3,arr1,arr2))

运行结果:
[1 6 3 8]
where里面有三个参数,第一个参数是条件,第二个参数是满足第一个参数要如何改变,第三个参数是不满足第一个参数要如何改变

接下来,我们创建一个三行三列的正态分布数组,然后我们把这个数组中大于零的数改为1,小于零的数改为零

arr4 = np.random.randn(3,3)
print(arr4)
print(np.where(arr4>0,1,0))

运行结果:
[[-0.62922747 -0.93531664 -0.09492486]
[ 0.3757405  -0.23420628  0.85395805]
[-0.43451664  1.36696855  0.15523776]]
[[0 0 0]
[1 0 1]
[0 1 1]]

where是可以实现嵌套操作的
我们将上面那个例子再加大一下难度,如果大于零的数我们改为1,小于零但不小于-1的数改为0,小于-1的数我们改为-1

arr5 = np.random.randn(3,3)
print(arr5)
print(np.where(arr5>0,1,np.where(arr5<-1,-1,0)))

运行结果:
[[-1.31958984  0.420699    0.46218665]
[ 0.1276776   0.68922162  0.38048573]
[-0.79035943 -1.32331569  0.39631777]]
[[-1  1  1]
[ 1  1  1]
[ 0 -1  1]]

想给大家留一个小任务,就是创建一个三行三列的数据,然后把大于零的数改为True,小于零的数改为False,如果有兴趣自己试试的可以不往下翻,自己试试

我把上面的那个小任务答案发一下:

arr6 = np.random.randn(3,3)
print(np.where(arr6>0,True,False))

今日鸡汤

不生气要争气,不看破要突破,不嫉妒要欣赏,不托延要积极。心态决定状态,心胸决定格局,眼界决定境界。过错是短暂的遗憾,错过是永远的遗憾。生活就是在细细的回味里散发香味的,同时我们也是在用自己的双手创造着新的惊喜。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lyl610abc + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 07:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表