【数据分析】numpy基础第三天

news2024/11/18 15:49:55

前言

本文只会讲解最常用的点乘(或叫矩阵乘法)、还有广播机制

本文代码

  • 链接
  • 提取码:1024

第1部分:基础数学计算

使用NumPy进行基本的数学运算是十分直观和简单的。下面我们将展示一些基本的加、减、乘、除运算。

和一个数字加减乘除

让我们首先创建一个简单的数组:

import numpy as np

arr = np.array([[1, 2],
                [-1, 4]])

现在,我们将展示如何把一个整数与数组中的每个元素进行加减乘除。

和整数3的乘法
arr * 3

该操作将会输出:

array([[ 3,  6],
       [-3, 12]])
和整数3的加法
arr + 3

该操作将会输出:

array([[4, 5],
       [2, 7]])
和整数3的减法
arr - 3

该操作将会输出:

array([[-2, -1],
       [-4,  1]])
和整数3的除法
arr / 3

该操作将会输出:

array([[ 0.33333333,  0.66666667],
       [-0.33333333,  1.33333333]])

相同形状矩阵之间的加减乘除

当两个矩阵形状相同,NumPy允许进行元素级的运算。

相同形状矩阵之间的乘法
A = np.array([[1, 2], [-1, 4]])
B = np.array([[2, 0], [3, 4]])

A * B

输出结果是:

array([[ 2,  0],
       [-3, 16]])

以上代码执行的逻辑相当于对矩阵的对应位置的元素进行相乘,如下图所示,其余的加法、减法、除法的也是同理。
在这里插入图片描述

图1
相同形状矩阵之间的加法
A + B

输出结果是:

array([[3, 2],
       [2, 8]])
相同形状矩阵之间的减法
A - B

输出结果是:

array([[-1,  2],
       [-4,  0]])
相同形状矩阵之间的除法
A / B  # 不必担心这里的红色警告,请看下文,这并不是你的问题。

在Numpy的除法运算中,如果除数中包含0,则会收到警告,但程序不会停止,该位置的结果会是无穷(inf)。

输出结果是:

array([[ 0.5       ,         inf],
       [-0.33333333,  1.        ]])

点乘

点乘(dot product)或矩阵乘法在NumPy中非常重要,但是在数据分析上应用较少,了解即可。

X1 = np.array([[1, 2], [3, 4]])
X2 = np.array([[5, 6, 7], [8, 9, 10]])

X3 = np.dot(X1, X2)

输出结果是:

array([[21, 24, 27],
       [47, 54, 61]])

图2展示了点乘(矩阵乘法)的逻辑

下面用虚线框住的矩阵里面的东西,代表下面:
左边矩阵第一行,和右边矩阵第一列,逐个相乘再求和,得到输出矩阵的第一行第一列上的单个元素

左边矩阵的列轴的大小,必须与右边矩阵的行轴的大小相等。
在这里插入图片描述

图2

第2部分:统计函数

NumPy内置的统计函数可以简化数据分析的工作。

c = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])

print("平均值:", np.mean(c))
print("中位数:", np.median(c))
print("标准差:", np.std(c))
print('最大值', np.max(c))
print('最小值', np.min(c))

这段代码会输出数组的平均值、中位数、标准差、最大值和最小值。

第3部分:广播机制

NumPy的广播机制允许对不同形状的数组进行数学运算。这是NumPy强大的功能之一,但也是比较抽象的概念。

简单来说,广播机制会按照一定的规则扩展数组的形状,使其匹配,然后进行运算。

通过代码案例感受广播

下面代码的广播机制的逻辑将会展示在下面的图中。

A = np.arange(0, 40,10).reshape(4, 1)
B = np.arange(0, 3)

C = A + B

输出结果是:

array([[ 0,  1,  2],
       [10, 11, 12],
       [20, 21, 22],
       [30, 31, 32]])

对于上面的代码的广播机制,请看下图:
在这里插入图片描述

图3

广播机制的具体规则

广播机制遵循四个基本规则,确保形状不完全匹配的数组也能进行运算。
建议结合更下面的逐条规则剖析刚才的广播代码的文段来理解广播机制的具体规则

NumPy的通用函数中,要求输入的数组形状,也就是shape属性是一致的,当数组的shape不相等的时候,则会使用广播机制调整数组使得shape一样,不过,需满足一定规则,否则将出错。这些规则可归结为以下四条:

  1. 让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐;如:a:2x3x2;b:3x2;则b向a看齐,在b的前面加1:变为:1x3x2
  2. 输出数组的shape是输入数组shape的各个轴上的最大值
  3. 如果输入数组的某个轴和输出数组(由参与计算的数组中的各个轴的最大值组成,请看规则2)的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错;
  4. 当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的仅有的一组值进行计算

逐条规则剖析刚才的广播代码

我们刚才讲过的广播机制的代码如下所示:

A = np.arange(0, 40,10).reshape(4, 1)
B = np.arange(0, 3)

C = A + B

输出结果是:

array([[ 0,  1,  2],
       [10, 11, 12],
       [20, 21, 22],
       [30, 31, 32]])
  1. 满足规则1:数组A的shape为(4,1),有4行1列,数组B的shape为(3,),加1补齐后,即有1行3列。
  2. 满足规则2:C是输出数组,它的形状是输入数组的各个轴上的最大值,数组A拥有最大的行轴,有4行;数组B只有一行,但是有3列,这是最大的列轴
  3. 满足规则3:输出数组为C,shape为(4, 3),对于shape为(4, 1)的数组A,行轴大小刚好与数组C相等,列轴大小为1,数组B同理。
  4. 满足规则4:如上面的图3所示。

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

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

相关文章

机器学习第二十七周周报 PINNs

文章目录 week27 PINNs摘要Abstract一、监督学习二、文献阅读1. 题目2. abstract3. 偏微分方程的数据驱动解3.1连续时间模型example(Schrodinger equation): 3.2离散时间模型Example (Allen–Cahn equation): 4. 文献解读4.1 Introduction4.2 创新点 三、…

1.28寒假集训

A: 解题思路&#xff1a; 移项就好v mv / (M - m) 下面是c代码&#xff1a; #include<iostream> using namespace std; int main() {int t;double M,m,v;cin >> t;while(t ! 0){cin >> M >> m >> v;printf("%.2lf\n",(m * v) / (M…

【动态规划】【字符串】【行程码】1531. 压缩字符串

作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 LeetCode 1531. 压缩字符串 II 行程长度编码 是一种常用的字符串压缩方法&#xff0c;它将连续的相同字符&#xff08;重复 2 次或更多次&#xff09;替换为字符和表示字符计数的数字&#xff08;行程长度&#xff09;…

WordPress如何自定义日期和时间格式?附PHP日期和时间格式字符串

WordPress网站在很多地方都需要用到日期和时间&#xff0c;那么我们应该在哪里设置日期和时间呢&#xff1f;又如何自定义日期和时间格式呢&#xff1f;下面boke112百科就跟大家一起来学习一下PHP标准化的日期和时间格式字符串。 特别说明&#xff1a;格式字符是标准化的&#…

Material Components for Android助你打造精美App

Material Components for Android助你打造精美App 简介 Material Components for Android (MDC-Android) 是帮助开发者执行 Material Design 的工具。由谷歌的核心工程师和用户体验设计师团队开发&#xff0c;这些组件使得开发者可以可靠地开发工作流来构建美观且功能齐全的 …

RT-DETR改进有效系列目录 | 包含卷积、主干、RepC3、注意力机制、Neck上百种创新机制

💡 RT-DETR改进有效系列目录 💡 前言 Hello,各位读者们好 Hello,各位读者,距离第一天发RT-DETR的博客已经过去了接近两个月,这段时间里我深入的研究了一下RT-DETR在ultralytics仓库的使用,旨在为大家解决为什么用v8的仓库训练的时候模型不收敛,精度差的离谱的问题,…

sqli.labs靶场(8-17关)

8、第八关&#xff08;布尔盲注&#xff09; id1显示You are in...........&#xff0c;id1单引号不显示&#xff0c;id1 --显示正常 这个应该是单引号闭合&#xff0c;接下来就和第七关差不多上脚本 爆库名长度&#xff1a;id1%27%20and%20length(database()){i}%20-- 爆库…

如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)

一、VMware Workstation 虚拟机 先得安装 VM 虚拟机&#xff0c;没有的可以参考这篇文章安装 VM 虚拟机 如何在 VM 虚拟机中安装 Win10 操作系统保姆级教程&#xff08;附链接&#xff09;https://eclecticism.blog.csdn.net/article/details/135713915 二、Red Hat Linux 镜…

软考 系统分析师系列知识点之知识管理(2)

接前一篇文章&#xff1a;软考 系统分析师系列知识点之知识管理&#xff08;1&#xff09; 所属章节&#xff1a; 第7章. 企业信息化战略与实施 第7节. 企业信息系统 7.7.5 知识管理 相关试题 1. 知识管理是企业信息化过程中的重要环节&#xff0c;知识可以分为显性知识和隐性…

计算机网络——IP协议

前言 网络层的主要负责地址分配和路由选择,ip负责在网络中进行数据包的路由和传输。 IPv4报文组成&#xff08;了解&#xff09; IPv4首部&#xff1a;IPv4首部包含了用于路由和传输数据的控制信息&#xff0c;其长度为20个字节&#xff08;固定长度&#xff09;。 版本&#…

leetcode26. 删除有序数组中的重复项

题目 题目 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &…

前端——JavaScript

目录 文章目录 前言 一. JavaScript基础 1.JavaScript基本结构 2. JavaScript 执行过程 3. JavaScript 引入方式 二. JavaScript 语法 1.数据类型 2.变量 2.1 var 关键字定义变量 2.2 let 关键字定义变量 2.3 var 与 let 的区别 3.字符串 3.1定义字符串 3.2 字…

Python爬虫解析库安装

解析库的安装 抓取网页代码之后&#xff0c;下一步就是从网页中提取信息。提取信息的方式有多种多样&#xff0c;可以使用正则来提取&#xff0c;但是写起来相对比较烦琐。这里还有许多强大的解析库&#xff0c;如 lxml、Beautiful Soup、pyquery 等。此外&#xff0c;还提供了…

除了Adobe之外,还有什么方法可以将Excel转为PDF?

前言 Java是一种广泛使用的编程语言&#xff0c;它在企业级应用开发中发挥着重要作用。而在实际的开发过程中&#xff0c;我们常常需要处理各种数据格式转换的需求。今天小编为大家介绍下如何使用葡萄城公司的的Java API 组件GrapeCity Documents for Excel&#xff08;以下简…

数据结构(一)------顺序表

文章目录 前言一、什么是顺序表二、实现顺序表1.静态顺序表2.动态顺序表总结 前言 制作不易&#xff01;三连支持一下呗&#xff01;&#xff01;&#xff01; 从今天起我们将会进入数据结构的学习&#xff01; 我们先来了解 什么是数据结构 数据结构是计算机存储、组织数…

2023年算法OOA-CNN-BiLSTM-ATTENTION回归预测(matlab)

OOA-CNN-BiLSTM-Attention鲸鱼算法优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 鱼鹰优化算法&#xff08;Osprey optimization algorithm&#xff0c;OOA&#xff09;由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出&#xff0c;其模拟鱼鹰的捕…

go语言函数进阶

1.变量作用域 全局变量 全局变量是定义在函数外部的变量&#xff0c;它在程序整个运行周期内都有效。 在函数中可以访问到全局变量。 package mainimport "fmt"//定义全局变量num var num int64 10func testGlobalVar() {fmt.Printf("num%d\n", num) /…

汽车网络安全dos, someip

汽车Cyber Security入门之DoS 攻防 - 知乎 3、SOME/IP-TP 近年来火热地谈论下一代EE架构和SOA的时候&#xff0c;总离不开SOME/IP这个进程间通讯协议。在许多应用场景中&#xff0c;需要通过UDP传输大型的SOME/IP有效载荷。鉴于在以太网上传输数据包的大小限制&#xff0c;SO…

多维时序 | Matlab实现DBO-BiLSTM蜣螂算法优化双向长短期记忆神经网络多变量时间序列预测

多维时序 | Matlab实现DBO-BiLSTM蜣螂算法优化双向长短期记忆神经网络多变量时间序列预测 目录 多维时序 | Matlab实现DBO-BiLSTM蜣螂算法优化双向长短期记忆神经网络多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DBO-BiLSTM多变量时间序…

Matlab|【完全复现】基于价值认同的需求侧电能共享分布式交易策略

目录 1 主要内容 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序完全复现《基于价值认同的需求侧电能共享分布式交易策略》&#xff0c;针对电能共享市场的交易机制进行研究&#xff0c;提出了基于价值认同的需求侧电能共享分布式交易策略&#xff0c;旨在降低电力市…