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

前言

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

本文代码

  • 链接
  • 提取码:1024

第1部分:基础数学计算

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

和一个数字加减乘除

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

import numpy as nparr = 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.mzph.cn/news/654508.shtml

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

相关文章

笨蛋总结JVM

笨蛋总结JVM 由于Java语言将自己的内存控制权交给了虚拟机,所以需要了解虚拟机的运行机制 (主要用于回顾JVM) 笨蛋总结JVM 笨蛋总结JVM1.运行时数据区域线程私有区域程序计数器Java虚拟机栈本地方法栈 线程共享区域堆方法区 1.2程序计数器…

键盘上Ins键的作用

前几天编写文档时,发现一个问题:插入内容时,输入的字符将会覆盖光标位置后的字符。原来是按到了键盘上的 Ins键,解决方法是:再按一次 Ins键(Ins键如果独立作为一键时,否则使用 “Fn Ins”组合键…

Sphinx的原理详解和使用

一、Sphinx介绍 1.1 简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也…

限时回归!!!3D版《空洞骑士》!!!

空洞骑士是一款基于横板平台跳跃的传统风格2D动作冒险游戏。庞大的游戏世界交错相通,玩家控制小虫子去探索幽深黑暗的洞穴,成为了一代人茶余饭后的惦念,深受广大玩家们的喜爱。 这类平台跳跃游戏一般是游戏开发初学者以及独立游戏开发者们比…

【DRAM存储器十八】DDR3介绍

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考资料:《镁光DDR3数据手册》 、《JESD79-3E》 最近忙于工作&#xff0…

Linux使用匿名管道实现进程池得以高效通信

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:Nonsense—Sabrina Carpenter 0:50━━━━━━️💟──────── 2:43 🔄 ◀️ ⏸ ▶️ …

python基础四------完结(概念在下面,代码看不懂了再看)

# a_list [1,2,3,4,5] # # print(a_list)# 根据下标来删除列表中的元素 # 爬取的数据中 有个别的数据 是我们不想要的 那么我们就可以通过下标的方式来删除 # del a_list[2] # print(a_list)# b_list [1,2,3,4,5] # print(b_list) # pop是删除列表中的最后一个元素 # b_list.…

Kali 基本命令大全

一、系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件- (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpu…

AP5216 平均电流型LED降压恒流驱动IC 手电筒汽车摩托车灯芯片

产品描述 AP5216 是一款 PWM工作模式, 高效率、外围简单、内置功率管,适用于5V~100V输入的高精度降压 LED 恒流驱动芯片。输出最大功率可达9W,最大电流 1.0A。AP5216 可实现全亮/半亮功能切换,通过MODE 切换:全亮/半亮…

SAP HANA 报错信息,如何根据报错关键词去进行处理

HANA建模其实上手会比较快,基本会SQL就可以进行开发。 在实际开发中,难点一个是建模思路,另外一个则是建模中报错的处理。 现在将HANA中报错进行一个整理,这里的并不是完整的报错信息,大家可以根据关键词进行查看。 …

ChatGPT更新了Mention功能,集结若干GPTs作战,AI智能体的心智入口;向量数据库的挑战和未来

🦉 AI新闻 🚀 ChatGPT更新了Mention功能,集结若干GPTs作战,AI智能体的心智入口 摘要:OpenAI在ChatGPT中引入了一个新功能,允许用户在聊天时任意一个GPTs(即ChatGPT最新推出的AI Agent 智能应用…

scrapy的入门使用

1 安装scrapy 命令: sudo apt-get install scrapy或者: pip/pip3 install scrapy2 scrapy项目开发流程 创建项目: scrapy startproject mySpider生成一个爬虫: scrapy genspider itcast itcast.cn提取数据:     根据网站结构在spider中实现数据采集相关内…

C/C++ - 函数进阶(C++)

目录 默认参数 函数重载 内联函数 函数模板 递归函数 回调函数 默认参数 定义 默认参数是在函数声明或定义中指定的具有默认值的函数参数。默认参数允许在调用函数时可以省略对应的参数,使用默认值进行替代。 使用 默认参数可以用于全局函数和成员函数。默认参…

C语言KR圣经笔记 5.12 复杂声明

5.12 复杂声明 C 语言有时会因为声明的语法而受到谴责,特别是涉及函数指针的声明语法。语法试图使声明和使用一致;在简单的情况下它的效果不错,但在更复杂的情况下会让人困惑,因为声明不能从左往右读,而且括号被过度使…

Linux文本三剑客---sed经典案例

Sed介绍: sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理…

Mybatis-plus原生pages分页未生效的解决方案

文章目录 前言原因1、Mybatis Plus版本的问题2、Mapper.xml文件中SQL语句格式问题3、Mybatis Plus默认分页拦截器问题4、分页参数传参问题5、分页配置的问题 解决方案1、升级对应的Mybatis-plus版本分页插件配置问题3、自定义分页拦截器4、正确的参数5、不同版本的配置文件3.4.…

Hugging Face创始人分享:企业如何在ChatGPT浪潮下实现战略布局

Hugging Face创始人兼首席执行官 Clem Delangue在IBM一年一度的 THINK大会中研讨了当前人工智能发展趋势,特别是ChatGPT模型以及其对行业的影响。他的演讲还涉及到一个关键的议题,在ChatGPT这样的通用模型出现后,企业如何在人工智能领域找到自…

QR 分解cpu程序

1. 代码 Makefile EXE : hello_qrSRC_QR qr_main.c qr_func.c $(EXE): $(SRC_QR)gcc $^ -o $ -lm.PHONY: clean clean:-rm -rf $(EXE) qr_main.c #include "stdio.h"int maqr(double* a,int m,int n,double* q);int main() {int i,j;static double q[4][4],a[4]…

全能相似度计算与语义匹配搜索工具包,多维度实现多种算法,涵盖文本、图像等领域。支持文图搜索,满足您在不同场景下的搜索需求

全能相似度计算与语义匹配搜索工具包,多维度实现多种算法,涵盖文本、图像等领域。支持文图搜索,满足您在不同场景下的搜索需求。 Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索 Similar…

window下如何安装ffmpeg(跨平台多媒体处理工具)

ffmpeg是什么? FFmpeg是一个开源的跨平台多媒体处理工具,可以用于录制、转换和流媒体处理音视频。它包含了几个核心库和工具,可以在命令行下执行各种音视频处理操作,如剪辑、分割、合并、媒体格式转换、编解码、流媒体传输等。FFmpeg支持多…