Numpy---ndarray矩阵运算、广播机制、排序、文件操作

news2024/11/25 7:03:13

1. 矩阵运算

n + 10  # 加
n - 10  # 减
n * 10  # 乘
n / 10  # 除
n // 2  # 整除
n ** 2  # 次方
n % 2  # 余数
n1 = np.random.randint(0, 10, size=(4, 5))
n2 = np.random.randint(0, 10, size=(4, 5))
display(n1, n2)
array([[3, 6, 1, 9, 9],
       [8, 9, 2, 0, 4],
       [4, 8, 5, 0, 1],
       [6, 1, 0, 0, 9]])
array([[0, 7, 5, 7, 1],
       [8, 8, 9, 9, 9],
       [2, 6, 4, 2, 9],
       [3, 6, 8, 5, 3]])
n1 + n2
n1 * n2
array([[ 0, 42,  5, 63,  9],
       [64, 72, 18,  0, 36],
       [ 8, 48, 20,  0,  9],
       [18,  6,  0,  0, 27]])

矩阵积 np.dot():第一个矩阵的列数等于第二个矩阵的行数

n1 = np.random.randint(0, 5, size=(2, 3))
n2 = np.random.randint(0, 5, size=(3, 2))
display(n1, n2)
array([[4, 3, 4],
       [1, 2, 4]])
array([[4, 3],
       [4, 4],
       [0, 4]])
np.dot(n1, n2)
array([[28, 40],
       [12, 27]])

np.matmul 和 np.dot 的区别: 二者都是矩阵乘法。 np.matmul 中禁止矩阵与标量的乘法。 在矢量

乘矢量的內积运算中,np.matmul 与 np.dot 没有区别。

线性代数中其他矩阵操作:

n = np.array([[1, 2, 3], 
              [2, 5, 4], 
              [4, 5, 8]])
# 矩阵逆
np.linalg.inv(n)
# 矩阵的行列式
np.round(np.linalg.det(n))
# 行列式计算: 矩阵的所有主对角线-所有副对角线
# 1*5*8 + 2*4*4 + 3*2*5 - (3*5*4 +2*2*8 + 1*4*5 )  =  -10
# 矩阵的秩 (满秩矩阵,奇异矩阵)
# 方阵
np.linalg.matrix_rank(n)

其他常见的数学操作:

n = np.array([1, 4, 8, 9, 16, 25, 64])

np.abs(n)  # 绝对值
np.sqrt(n)  # 平方根
# n ** 0.5
np.square(n)  # 平方
# n ** 2
np.exp(n)  # 指数 e=2.718281828459045
np.log(n)  # 自然对数:以e为底的对数, ln3
np.log(np.e)  # 1
np.log(1)  # 0
np.log2(n)  # 2为底的对数
np.log10(n)  # 10为底的对数,常用对数

np.sin(n)  # 正弦
np.cos(n)  # 余弦
np.tan(n)  # 正切
np.round(n, 2)  # 四舍五入
np.ceil(n)  # 向上取整
np.floor(n)  # 向下取整

np.cumsum(n)  # 累加
# [1, 4, 8,  9,  16,  25,  64]
# [1, 5,13, 22, 38,  63, 127]

2. 广播机制

数组在进行矢量化运算时,要求数组的形状是相等的。当形状不相等的数组执行算术运算的时候,

就会出现广播机制,该机制会对数组进行扩 展,使数组的shape属性值一样,这样,就可以进行矢

量化运算了。

arr1 = np.array([[0],[1],[2],[3]])
arr1.shape
# (4, 1)
arr2 = np.array([1,2,3])
arr2.shape
# (3,)
arr1+arr2
# 结果是:
array([[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6]])

数组arr1是4行1列,arr2是1行3列。这两个数组要进行相加,按照广播机制会对数组arr1和arr2都

进行扩展,使得数组arr1和arr2 都变成4行3列。

广播机制实现了使两个或两个以上数组的运算,即使这些数组的shape不是完全相同的,只需要满

足如下任意一个条件即可:

如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符,或其中

的一方的长度为1。

广播会在缺失和(或)长度为1的维度上进行。

广播机制需要扩展维度小的数组,使得它与维度最大的数组的shape值相同,以便使用元素级函数

或者运算符进行运算。

3. 排序

np.sort() 与 ndarray.sort() 都可以,但有区别:

np.sort() 不改变输入;

ndarray.sort() 本地处理,不占用空间,但改变输入。

n1 = np.random.randint(0, 10, size=6)
n1
array([9, 9, 7, 5, 6, 4])
# 不改变原数组
n2 = np.sort(n1)
n2
array([4, 5, 6, 7, 9, 9])
n1
array([9, 9, 7, 5, 6, 4])
n3 = np.random.randint(0, 10, size=6)
n3
array([9, 3, 1, 1, 9, 0])
n3.sort()
n3
array([0, 1, 1, 3, 9, 9])

4. 文件操作

保存数组:

save : 保存ndarray到一个npy文件

savez : 将多个array保存到一个npz文件中

x = np.arange(5)
y = np.arange(10, 20)

# save: 保存x.npy
np.save('x', x)

# savez
np.savez('arr.npz', xarr=x, yarr=y)

读取数组:

# 读取npy文件
np.load('x.npy')

# 读取npz文件
np.load('arr.npz')['xarr']

csv、txt文件的读写操作:

n = np.random.randint(0, 10, size=(3, 4))
n
array([[4, 6, 6, 0],
       [1, 9, 7, 0],
       [7, 7, 7, 5]])
# 存储到csv或txt
# delimiter=',': 分隔符
np.savetxt('arr.csv', n, delimiter=',')
# 读取csv或txt
np.loadtxt('arr.csv', delimiter=',', dtype=np.int16)
array([[4, 6, 6, 0],
       [1, 9, 7, 0],
       [7, 7, 7, 5]], dtype=int16)array([[4, 6, 6, 0],
       [1, 9, 7, 0],
       [7, 7, 7, 5]], dtype=int16)

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

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

相关文章

17 条件随机场

文章目录 17 条件随机场——CRF(Condition Random Field)17.1 背景介绍17.2 HMM与MEMM的区别17.3 MEMM与CRF的区别17.4 CRF模型17.4.1 CRF的概率密度函数17.4.2 CRF概率密度函数简化(向量形式) 17.5 CRF需要解决的问题17.6 边缘概…

基于 AIGC,RocketMQ 学习社区探索开源软件学习新范式

作者:寒斜 AIGC 持续火爆全球,越来越多的场景开始接入并体现非凡的价值。其中应用广泛的场景之一就是智能知识问答,它改变了人们学习的方式,从阅读式到问答式,让知识的获取更加精准有效。开源软件拥有着广泛的求知群体…

ITSM 如何帮助制造业企业

ITSM在现代制造业中的作用 在过去的几年中,制造业已经看到了快速的数字化,以智能制造技术改进生产技术。在工业4.0和工业5.0的推动下,制造商正在摆脱陈旧 以及利用物联网、人工智能、机器学习和大数据等先进技术的互联智能制造系统&#xff…

【Protobuf速成指南】Any类型的使用

文章目录 2.2 Any类型的使用一、基本认识二、使用需知三、Any字段的使用①修改proto文件② Any相关函数③ 类型转换 四、Contact 2.2 改写 2.2 Any类型的使用 本系列文章将通过对通讯录项目的不断完善,带大家由浅入深的学习Protobuf的使用。这是Contacts的2.2版本&a…

基于脑电功率的疲劳驾驶检测研究_kaic

基于脑电功率的疲劳驾驶检测研究 摘 要 在道路交通安全领域,疲劳驾驶是一种常见的交通安全隐患。现有数据统计,全球每年有大约21%的重大交通事故与疲劳驾驶有关,疲劳驾驶成为了诱发交通事故的主要原因之一…

多模态深度学习:定义、示例、应用

人类使用五种感官来体验和解读周围的世界。我们的五种感官从五个不同的来源和五种不同的方式捕捉信息。模态是指某事发生、经历或捕捉的方式。 人脑由可以同时处理多种模式的神经网络组成。想象一下进行对话——您大脑的神经网络处理多模式输入(音频、视觉、文本、…

《树莓派4B家庭服务器搭建指南》第十六期:安装Calibre Web建立公网可访问私人电子书库

最近在整理收藏的电子书,以便在公网可以随时访问自己的电子书,然而,Calibre桌面端虽然功能强大,并且可以开启本地http服务,但http的界面还是过于简陋 我发现了一个Calibre Web开源项目,界面也非常舒服&…

STM32F407实现1588v2(ptpd)

硬件: STM32F407ZGT6开发板 软件: VSCode arm-none-eabi-gcc openOCD st-link 在github搜到一个在NUCLEO-F429ZI开发板上移植ptpd的example,因为和F407差别很小,所以就打算用这个demo移植到手头的开发板上。因为目前只需要…

mysql中将字符123转变成1.2.3

具体业务需求:因为需求变更,之前存储数值型字符串,现需要将数值型转变为x.x.x update mpc_mp_package a join (select(selectGROUP_CONCAT(SUBSTRING(mp_ver, number, 1) separator .) as separated_stringfrom(selecti : i 1 as numberfro…

别再等了,这就是ping通上不了网的解决办法

ip能ping通,但是就是无法上网,应该大部分网工都遇到过这种情况吧。 能ping通,说明ip是能够和网络设备通信的,但是上不了网,就要具体问题具体分析了。 今天聊点基础的,ip能ping通但是上不了网,到…

百分点科技出席2023华为云TechWave中东中亚峰会

6月7日,2023华为云TechWave中东中亚峰会在哈萨克斯坦阿拉木图举办,百分点科技作为华为云生态合作伙伴出席活动,联合发布系列智能化解决方案,百分点科技CTO刘译璟进行主题分享。 刘译璟(右二)参与联合解决方…

RocketMQ集群部署

一、部署环境 两台服务器,每台一个nameserver构成集群,broker集群双主双从。 主机 容器名称 IP 与宿主机的端口映射 ODL控制器会同过vip通道10909去连接mq。主从通过10912端口同步这两个地址是通过-2 1 在配置文件端口10911基础上计算得出 两个宿主机…

高速信号的 pre-emphasis 预加重和 de-emphasis去加重

1 为何需要 emphasis ? 预加重和去加重其实属于高速信号均衡技术的一种,均衡技术又叫信号补偿技术。 信号从发送端发出,经信道传输,到达接收端。在传输过程中,信号会发生失真,影响接收端对信号的正确判决。…

项目构建与部署

项目构建与部署 Jar部署War部署1.修改打包形式2.排除内置的Tomcat容器3.添加servlet-api依赖4.修改启动类 项目可以内嵌Servlet容器,因此部署极为方便,可直接打包成可执行Jar包部署在有Java运行环境的服务器…

BurpSuite2023测试越权漏洞

BurpSuite2023测试越权漏洞 BurpSuite安装创建项目 - 打开内置浏览器越权漏洞测试问题处理 BurpSuite安装 官网下载社区版并安装,下载地址:链接: https://portswigger.net/burp 安装成功后图标 创建项目 - 打开内置浏览器 打开BurpSuite&#xff0c…

uni-app打包ios的步骤

注意:下面的操作必须同时满足三个条件,且这三个条件都是必须得: 1.有一个苹果开发者账号(要收费) 2.有一台苹果笔记本(在笔记本上生成证书和文件) 3.有一部苹果手机(用于测试app的功能) 使用uniapp发布ios的应用的步骤如下: 点击发…

Lecture 14 Context-Free Grammar

目录 Context-Free GrammarBasics of Context-Free GrammarsCFG Parsing ConstituentsSyntactic ConstituentsConstituents and PhrasesExample: A Simple CFG for English and generating sentencesCFG Trees CYK AlgorithmCYK AlgorithmConvert to Chomsky Normal FormThe CY…

影响电磁铁磁力大小的因素有哪些

影响电磁铁磁力大小的因素主要有四个,一是缠绕在铁芯上线圈的圈数,二是线圈中电流的强度,三是缠绕的线圈与铁芯的距离,四是铁芯的大小形状。 首先要了解电磁铁的磁性是如何产生的,通电螺线管的磁场,由毕奥&…

C#程序设计实验

C#实验 实验1 C# 基本编程 题目 VS下新建一个控制台项目:诸如:hello world程序,运行程序输出结果。并解释C#程序的结构: 诸如:一个基本的C#程序包含几部分 ,每一部分的功能是什么。。。 完整代码 usin…

YAPI接口自动化测试该如何正确地操作

目录 前言: 1、它首先是一个很好的接口维护的工具; 2、单个接口测试时,更方便灵活,更易用; 3、接口自动化测试,可以0代码基础进行接口集合的测试; 前言: YAPI是一款易于使用、可…