数据分析基础之《numpy(4)—ndarry运算》

一、逻辑运算

当我们要操作符合某一条件的数据时,需要用到逻辑运算

1、运算符
满足条件返回true,不满足条件返回false

# 重新生成8只股票10个交易日的涨跌幅数据
stock_change = np.random.normal(loc=0, scale=1, size=(8, 10))# 获取前5行前5列的数据
stock_change = stock_change[0:5, 0:5]# 逻辑判断,如果涨跌幅大于0.5,就标记为true,否则标记为false
stock_change > 0.5

2、布尔索引
想要对布尔数据进行一个统一的操作,相当于是取出数组中为true的所以值,或为false的所有值

# 布尔索引
stock_change[stock_change > 0.5]

二、通用判断函数

1、np.all()
传入一组布尔值,只要有一个false,就返回false,全都是true才返回true

2、np.any()
传入一组布尔值,只要有一个true,就返回true,全都是false才返回false

3、例子

# 判断stock_change是否全是上涨的
np.all(stock_change > 0)stock_change# 判断stock_change是否有上涨的
np.any(stock_change > 0)

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

1、通过使用np.where能够进行更加复杂的运算
np.where(布尔值, true的位置要设置的值, false的位置要设置的值)

2、例子

# 判断前四个股票前四天的涨跌幅,大于0的置为1,否则为0
temp = stock_change[:4, :4]tempnp.where(temp > 0, 1, 0)

3、np.logical_and 逻辑与

4、np.logical_or 逻辑或

5、例子

# 判断前四个股票前四天的涨跌幅,大于0.5并且小于1的,置为1,否则置为0
np.where(np.logical_and(temp > 0.5, temp < 1), 1, 0)# 判断前四个股票前四天的涨跌幅,大于0.5或者小于-0.5的,置为1,否则置为0
np.where(np.logical_or(temp > 0.5, temp < -0.5), 1, 0)

四、统计运算

1、如果想要知道涨幅或者跌幅最大的数据,应该怎么做

2、统计指标函数
np.min(a, axis=None, out=None, keepdims=False):最小值
np.max(a, axis=None, out=None, keepdims=False):最大值
np.mean(a, axis=None, out=None, keepdims=False):平均值
np.median(a, axis=None, out=None, keepdims=False):中位数
np.var(a, axis=None, out=None, keepdims=False):方差
np.std(a, axis=None, out=None, keepdims=False):标准差

3、可以用两种方式调用
np.函数名
ndarray.方法名

4、axis默认为axis=0即列向,如果axis=1即横向

5、例子

# 对于前四个股票前四天数据,进行一些统计运算
print("前四只股票前四天的最大涨幅{}".format(np.max(temp, axis=1)))
print("前四只股票前四天的最大跌幅{}".format(np.min(temp, axis=1)))
print("前四只股票前四天的波动程度{}".format(np.std(temp, axis=1)))
print("前四只骨片前四天的平均涨跌幅{}".format(np.mean(temp, axis=1)))

6、获得最大值最小值的位置(索引)
np.argmax(a, axis)
np.argmin(a, axis)

7、例子

# 获取股票指定哪一天的涨幅最大
print("前四只股票前四天内涨幅最大{}".format(np.argmax(temp, axis=1)))
print("前四天一天内涨幅最大的股票{}".format(np.argmax(temp, axis=0)))

五、数组运算

1、场景
平时成绩占30%,期末成绩占70%,算出最终成绩

2、数组与数的运算
运算符作用到数组中的每一个元素

# 数组与数的运算
arr = np.array([[1,2,3,2,1,4], [5,6,1,2,3,1]])arr + 10

3、数组与数组的运算

# 数组与数组的运算
arr1 = np.array([[1,2,3,2,1,4], [5,6,1,2,3,1]])
arr2 = np.array([[1,2,3,4], [3,4,5,6]])
arr1 + arr2

提示不满足广播机制!

4、广播机制

(1)执行broadcast的前提在于,两个nadarray执行的是element-wise的运算,Broadcast机制的功能是为了方便不同形状的ndarray(numpy库的核心数据结构)进行数学运算

(2)当操作两个数组时,numpy会逐个比较它们的shape(构成的元组tuple),只有在下述情况下,两个数组才能够进行数组与数组的运算
维度相等(单看这一列)
shape(其中相对应的一个地方为1)

(3)可以这样理解,首先把数组形状展开,从右到左按列来看,两个情况中只要满足一个就可以

以下情况不匹配:

(4)运算的结果,每一个维度取最大的

(5)例子

arr1 = np.array([[1,2,3,2,1,4], [5,6,1,2,3,1]])
arr2 = np.array([[1], [3]])arr1 # (2, 6)arr2 # (2, 1)arr1 + arr2

arr1是2行6列,arr2是2行1列

相加的结果,维度相同的,对应的每一行分别运算,维度为1的对所有行运算

六、矩阵运算

1、如何才能进行学生成绩计算呢

2、什么是矩阵
矩阵,英文matrix,和array的区别矩阵必须是2维的,但是array可以是多维的

3、两种方法存储矩阵
(1)ndarray 二维数组

# 矩阵运算
# ndarray存储矩阵
data = np.array([[80,86], [82,80], [85,78], [90,90], [86,82], [82,90], [78,80], [92,94]])datatype(data)


(2)matrix 数据结构
np.mat()
将数组转换成矩阵类型

# matrix存储矩阵
data_mat = np.mat([[80,86], [82,80], [85,78], [90,90], [86,82], [82,90], [78,80], [92,94]])data_mattype(data_mat)

4、矩阵乘法运算
矩阵乘法的两个关键:形状改变和运算规则

(1)形状改变

必须符合上面的式子,否则运算出错。第一个矩阵的列数和第二个矩阵的行数要一致

(2)运算规则

5、ndarray矩阵乘法api
np.matmul:矩阵相乘
np.dot:点乘

6、计算成绩
ndarray存储方式

# 计算成绩
dataweights = np.array([[0.3], [0.7]])weightsnp.matmul(data, weights)np.dot(data, weights)

matrix存储方式

weights_mat = np.mat(weights)weights_matdata_mat * weights_mat

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/238322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《A++ 敏捷开发》-1 如何改善

1 如何改善 敏捷开发过程改进案例 5月 A公司一直专门为某电信公司提供针对客服、线上播放等服务。 张工是公司的中层管理者&#xff0c;管理好几个开发团队&#xff0c;有5位项目经理向他汇报。 他听说老同学的团队都开始用敏捷开发&#xff0c;很感兴趣&#xff0c;便参加了…

Zookeeper集群搭建,四字命令监控,Leader选举原理以及数据如何同步

Java学习面试指南&#xff1a;https://javaxiaobear.cn 1、集群角色 Leader&#xff1a; 领导者。 事务请求&#xff08;写操作&#xff09;的唯一调度者和处理者&#xff0c;保证集群事务处理的顺序性&#xff1b;集群内部各个服务器的调度者。对于create、setData、delete…

抖店怎么运营?走通流程是关键!

我是电商珠珠 很多新手在入驻抖店的时候&#xff0c;都不知道前期怎么去运营。 运营的技巧很多&#xff0c;牵扯到很多细节&#xff0c;跑通流程是关键。 所以&#xff0c;今天就来给大家讲讲抖店的几个基本流程&#xff0c;只有将流程跑通了才能去更快的抠细节上的东西。 …

Jenkins自动化构建打包,部署

1.环境准备 上传jdk&#xff0c;maven和tomcat的包&#xff0c;解压到/usr/local下并配置环境变量。 配置jdk [rootserver04 ~]# vim /etc/profile.d/java.sh JAVA_HOME/usr/local/java export PATH$JAVA_HOME/bin:$PATH##加载环境变量 [rootserver04 ~]# source /etc/profi…

elementui - table中下拉进行验证

<template><!-- 巡查计划 - 新增巡查点位 --><el-dialog :visible.sync"dialogShow1" title"新增巡查点位" width"800" top"15vh" closehandleCancle><el-form :model"ruleForm" ref"ruleForm&qu…

C语言--指针深入理解--题目篇

C语言--指针深入理解--题目篇 1. sizeof 与 strlen 比较1.1 sizeof1.2 strlen1.3 数组名的意义 2. 数组和指针笔试题解析&#xff08;均以x86环境为例&#xff09;2.1 ⼀维数组2.2 字符数组2.3 二维数组 3. 指针运算笔试题解析 1. sizeof 与 strlen 比较 1.1 sizeof sizeof 计…

FPGA未解之谜

一.ila一会能加载出波形&#xff0c;一会加载不出波形——在自己做的v7开发板中遇到&#xff0c;其他开发板从未遇到过 1.小梅哥说&#xff1a;可能与硬件jtag连接不稳定导致。

DRF从入门到精通二(Request源码分析、DRF之序列化、反序列化、反序列化校验、序列化器常用字段及参数、source、定制字段、保存数据)

文章目录 一、Request对象源码分析区分原生request和新生request新的request还能像原来的reqeust一样使用吗源码片段分析总结&#xff1a; 二、DRF之序列化组件序列化介绍序列化步骤序列化组件的基本使用反序列化基本使用反序列化的新增反序列化的新增删除单条 反序列化的校验序…

【Linux笔记】网络操作命令详细介绍

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux学习 ⛳️ 功不唐捐&#xff0c;玉汝于成 前言&#xff1a; 网络操作是Linux系统中常见的任务之一&#xff0c;它涵盖了测试网络连接、配置网络接口、显示网络统计信息以及远程登录和文件传…

RabbitMQ笔记(高级篇)

RabbitMQ笔记_高级篇 问题代码准备1. 新建生产者2. 新建消费者 RabbitMQ 高级特性1. 消息的可靠投递☆1.1 两种模式1.2 测试confirm 确认模式1.3 测试return 退回模式1.4 小结 2. Consumer ACK☆2.1 三种ACK2.2 测试手动ACK2.3 小结2.4 消息可靠性总结 3. 消费端限流测试消费端…

【即插即用篇】YOLOv8改进实战 | 引入 Involution(内卷),用于视觉识别的新一代神经网络!涨点神器!

YOLOv8专栏导航:点击此处跳转 前言 YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。 YOLOv8是一种尖端的、最先进的 (SOTA) 模型,它建立在以前成…

CSS 网页制作-学成在线

1、 准备工作 1.1 项目目录 网站根目录是指存放网站的第一层文件夹&#xff0c;内部包含当前网站的所有素材&#xff0c;包含HTML、CSS、图片、JavaScript等等。 1.2 版心效果 可以发现都是呈现版心居中的效果&#xff0c;但是每次都写一次太麻烦了&#xff0c;可以把版心居中…

python可以做小程序研发嘛,python能做微信小程序吗

大家好&#xff0c;给大家分享一下python可以做微信小程序开发吗&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 大家好&#xff0c;给大家分享一下用python编写一个小程序&#xff0c;很多人还不知道这一点。下面详细解释一下用python代码…

java设计模式学习之【命令模式】

文章目录 引言命令模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用股票示例代码地址 引言 想象一下&#xff0c;你在一个忙碌的厨房里&#xff0c;厨师们正忙于准备各种菜肴。每当服务员带来一个新订单时&#xff0c;他们不会直接对厨师说需要做什么菜。相…

flutter开发实战-设置bottomNavigationBar中间按钮悬浮效果

flutter开发实战-设置bottomNavigationBar中间按钮悬浮的效果 在使用tabbar时候&#xff0c;可以使用bottomNavigationBar来设置中间凸起的按钮&#xff0c;如下 一、效果图 中间按钮凸起的效果图如下 二、实现代码 我们使用BottomAppBar 一个容器&#xff0c;通常与[Sscaf…

2023年PMP证书的含金量有多高?对于企业来说有多大的价值?

PMP含金量更多的是“敲门砖”作用&#xff0c;公司招聘的门槛 当然现在PMP管理模式也很热门&#xff0c;各大企业都有引进改良应用在公司的项目上&#xff0c;之前在校友群里面大家在讨论PMP 的作用也有说到这一点&#xff0c;给大家看看吧。 至于为什么PMP认证从国外引进大陆…

⭐Unity 读取本地图片再区域裁剪

现在需求是将本地的图片读取之后再区域截图成新的图片 话不多说直接上代码 using UnityEngine; using System.IO;public class LocalRegionCapture : MonoBehaviour {public string fullScreenImagePath "Assets/SavedImages/fullScreenScreenshot.png";public str…

【PyQt学习篇 · ⑭】:QTableView的使用

文章目录 QTableView的使用示例 QTableView的使用 QTableView 是 PyQt 中用于显示表格数据的窗口部件&#xff0c;它提供了一个灵活的方式来显示和编辑数据。下面是一些关于 QTableView 的使用的具体信息&#xff1a; 创建 QTableView 对象&#xff1a; from PyQt5.QtWidgets …

python/C 生成beta分布的随机数

python/C 生成beta分布的随机数 文章目录 python/C 生成beta分布的随机数前言一、beta分布理论知识二、python 生成服从beta分布的随机数三、C语言生成服从beta分布的随机数 前言 想把一个算法用C语言实现&#xff0c;其中涉及到了beta分布取随机数&#xff0c;记录一下结果 一…

雀巢困在业绩和质量里

撰稿|行星 来源|贝多财经 雀巢集团CEO马克施奈德曾在2023年中报中表示&#xff0c;后疫情时代居家消费已恢复常态&#xff0c;从而消除了制约雀巢部分品类增长的阻碍。 但就雀巢前三季度财报而言&#xff0c;该公司在全球及大中华区的销售额均有所下降&#xff0c;有机增长主…