Numpy包常用科学计算方法总结

news2024/9/19 19:14:54

numpy包的计算性能是python原始方法计算性能的几十倍到几百倍

一、引入numpy包:                                                                                                                         

import numpy as np

 二、创建数组:

#定义一个python的List
list = [1,2,3]
#将python的List包装成numpy的array:
array = np.array(list)
#array的类型为numpy.ndarray:
type(array)  #numpy.ndarray
#array数组的维度是:
array.ndim # 1维数组,几维数组就返回几
#array的形状;
array.shape #(1,3) 代表1行3列

#array变形:
array.reshape(3,1) #将array改成3行1列。需要注意的是,reshape参数不能随便写,必须基于原有的数组,做有意义的变换,如何写的参数不对,基于array的原有数据不能进行reshape,会报错。

三、利用np创建测试数据

#设置随机种子,设置成固定值后,np每次生成的随机数都是固定不变的
np.random.seed(1)
#生成随机数数组
np.random.randint(low = 0,high = 101,size=10)#表示生成从0(low)到100(不好含high)随机数数组,数组长度是10

np.random.randint(low = 0,high = 101,size = (2,5,3))#表示生成从0(low)到100(不好含high)随机数数组,生成的是一个三维数组,第一个维度有两个特征,第二个维度有5个特征,第三个维度有3个指标。可以这么形象的理解: 有两个班,每个班有5个学生,每个学生有3门课程。如何用数组表示两个班每个学生3门课程的成绩呢,就是这个表达式

incides = np.arange(num) #生成0至(num-1)个顺序数字的数组
np.random.shuffle(incides ) #将顺序数组打乱

 四、np常用计算公式

#np中array加减乘除一个数,都是在数组中每个元素上进行加减乘除这个数,如:
array = np.random.randint(low = 0,size = 101,size = (2,3))
#array([[91, 33, 38],[10, 77, 99]])
array+1
#array([[ 92,  34,  39],[ 11,  78, 100]])
array**2 # 平方
#array([[8281, 1089, 1444],[ 100, 5929, 9801]])
np.abs(array) #求每个元素的绝对值
np.sqrt(array) #求每个元素的开平方根
np.sin(array) #求每个元素的sin的值    
array.sum(axis=0) #求array数组求和,axis=0代表求x轴总和,即各行的元素纵向相加,axis=1代表求y轴总和,即横向求和。默认不写则求所有元素的和。
#例如:
a = np.array([[1,2,3],[4,5,6]])
a.sum()  #所有元素求和,21
a.sum(axis=0) # 求x轴的和,即每行的x轴对应相加,为array([5, 7, 9])
a.sum(axis=1) #求y轴的和,即横向相加构成y轴的一个值,为array([ 6, 15])

array.mean()# 求平均值,参数同sum()方法

array.std() #求标准差,参数同sum()

 五、向量与向量之间的计算

1. 向量的大小(向量的模)

a:[x1,x2,......xn]  公式:

:

#例如: 
array = np.array([[1,2,3],[4,5,6]])
#求各元素的平方和:
a= (array**2).sum(axis=0)
# 再开根号就是array向量的模
np.sqrt(a)



#以上是手动求解,np提供了直接的求模方法:  linalg是线性处理数据的工具包,就是线性代数相关的功能
np.linalg.norm(array)

2.求两个向量的内积

公式:(a:[x1,x2,......xn]  b:[y1,y2......yn]) (疑问: 多维数组的a和b如何表示呢?)

a = np.array([1,2,3])
b = np.array([4,5,6])
#内积的三种写法:
a @ b
a.dot(b)
np.dot(a,b)

内积的含义:

3.求两个向量的余弦相似度

由上面公式可知,余弦相似度取值范围是[-1,1],是内积公式的变形。余弦相似度是两个向量的夹角,夹角越小越相似。

a = np.array([1,2,3])
b = np.array([4,5,6])
#余弦相似度:
a @ b /(np.linalg.norm(a)*np.linalg.norm(b))

4.求两个向量的欧式距离

公式: d = sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2 +....)

表示两个向量之间的距离,距离越小,越相似

a = np.array([4,5,6])
b = np.array([1,2,3])
np.sqrt((a-b)**2)

5. 方差、标准差公式

6. broadcast 广播机制

两个同维度的向量加减乘除运算可以直接对位运算。对于不同维度的两个向量,能否直接运算,需要看低维度的向量能否通过广播机制转成高维度的向量。所谓的广播机制就是通过复制行和列,使两个向量对齐,然后进行加减乘除计算。

六、练习应用 

现在有50个同学,每个同学3门课程成绩,用np随机生成50名同学的成绩数组:

array = np.random.randint(low = 0,high = 101,size = (50,3))

求三号同学的第2门成绩:

array[2,1]

取出所有语文成绩不及格的同学:

#获取所有行所有列的写法:
array[:,:] # 第一个:代表所有行,第二个:代表所有列
#获取语文成绩小于60的学生成绩,也就是所有行是语文成绩小于60,列是所有列,写法如下:
array[array[:,0]<60,:]

找出所有语文成绩及格但是英语成绩不及格的学生:

array[(array[:,0]>60 & array[:,2]<60),:]

所有学生,所有成绩的平均分:

array.mean

所有学生,每门课程的平均分,标准差:

array.mean(axis=0)
array.std(axis=0)

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

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

相关文章

微信分账报错1908(请求中含有未在API文档中定义的参数)

开发指引-分账 | 微信支付合作伙伴平台文档中心 问题描述&#xff1a;根据微信分账文档&#xff0c;在下单接口添加是否分账参数后&#xff0c;报错如下 Client error: POST https://api.mch.weixin.qq.com/v3/pay/partner/transactions/jsapi 400 Bad Request {"code…

golang教程 beego框架笔记一

安装beego 安装bee工具 beego文档 # windos 推荐使用 go install github.com/beego/bee/v2master go get -u github.com/beego/bee/v2masterwindows使用安装bee工具时碰到的问题&#xff1b; 环境配置都没有问题&#xff0c;但是执行官网的命令&#xff1a;go get -u github…

Cadence Allegro如何添加/生成测试点?

Allegro因其功能强大、界面灵活、可适应切换复杂项目的需求&#xff0c;很快成为全球最受欢迎的EDA软件之一&#xff0c;而很多工程师在Allegro软件中添加测试点&#xff0c;这样做的好处是为了进行电路的功能测试和故障诊断&#xff0c;那么如何在Allegro添加/生成测试点&…

【Git】Git 分支

Git 分支 1.分支简介 为了真正理解 Git 处理分支的方式&#xff0c;我们需要回顾一下 Git 是如何保存数据的。 或许你还记得 起步 的内容&#xff0c; Git 保存的不是文件的变化或者差异&#xff0c;而是一系列不同时刻的 快照 。 在进行提交操作时&#xff0c;Git 会保存一…

Python 网页爬虫原理及代理 IP 使用

目录 前言 一、Python 网页爬虫原理 二、Python 网页爬虫案例 步骤1&#xff1a;分析网页 步骤2&#xff1a;提取数据 步骤3&#xff1a;存储数据 三、使用代理 IP 四、总结 前言 随着互联网的发展&#xff0c;网络上的信息量变得越来越庞大。对于数据分析人员和研究人…

基于antd+vue2来实现一个简单的绘画流程图功能

简单流程图的实现&#xff08;基于antdvue2的&#xff09;代码很多哦~ 实现页面如下 1.简单操作如下 2.弹框中使用组件&#xff1a; <vfdref"vfd"style"background-color: white;":needShow"true":fieldNames"fieldNames"openUse…

押中AIGC 美图终于认清了自己

随着美图公布中期业绩&#xff0c;该公司的股价再度站上3港元&#xff0c;虽然这个股价距离今年7月创造的年内新高3.56港元还有点距离&#xff0c;但这已经是这家公司过去一年半都未能突破的点位。 股价回升得益于美图公布的惊人业绩。据2023年度中期业绩报告&#xff0c;该公…

javaWeb录入数据异常,mysql显示错误

由于项目,需要输入 电脑的mac地址 ,在web页面中进行录入,但是某个同事录入一直有问题,数据查询时使用 in 或者 都查询不到 通过like %% 可以查询到,非常奇怪,请广大网友不吝赐教. 通过 toHex 进行显示发现 数据开头多了 E2808E

【STM32】FSMC—扩展外部 SRAM 初步使用 1

基于野火指南者《零死角玩转 STM32F103—指南者》的学习 STM32F103系列 FSMC Flexible Static Memory Controller简介 1.详细功能参看《STM32F10x参考手册》&#xff0c;这边是概述 是一个外设&#xff0c;挂载在AHB总线下。 可以用于驱动包括 SRAM、NOR FLASH 以及 NAND FL…

浅析TSINGSEE青犀视频AI智能分析网关车辆检测/车牌识别算法及应用场景

在数字化时代&#xff0c;随着大众对出行要求的提升&#xff0c;汽车数量也成与日俱增&#xff0c;为城市与交通管理带来了许多困扰。旭帆科技为给交通管理和车辆安全提供高效的解决方案&#xff0c;特此研发了AI智能车辆检测与车牌识别算法。 旭帆科技TSINGSEE青犀视频AI车辆检…

word技巧之--表格与文本的转换(WPS版)

经常写文档的朋友们难免会需要在word文档中添加表格&#xff0c;也会发现word表格没有excel表格那么灵活&#xff0c;编辑起来有点麻烦。 今天分享一些Word的使用技巧&#xff0c;希望对大家有帮助。 文本快速转为表格 选中需要转换为表格的文本&#xff0c;点击【插入】选项…

Altium 高级技巧 在扁平原理图中创建多个ROOM

Altium 的 ROOM 这个特性非常有用, 使用ROOM在编辑PCB时,可以很方便的整体拖动局部器件和电路图,为模块化电路设计提供便利 常规的设计模式应该采用垂直模式, 由顶层-中间层-底层, 顶层设计整体的框图连接,也就是原理图符号直接的连接 类似如下: 类似这样,可以实现…

揭秘分布式文件系统大规模元数据管理机制——以Alluxio文件系统为例

当今&#xff0c;我们的世界已经进入一个数据时代。随着互联网、物联网、5G、大数据、人工智能、自动驾驶、元宇宙等信息技术的快速发展&#xff0c;人们在产生、收集、存储、治理和分析的数据的总量呈快速增长的趋势。形态多样、格式复杂、规模庞大、产生迅速的行业领域大规模…

笔记 | 排序算法实现(Python)

排序算法 一、选择排序二、合并/归并排序三、快速排序四、计数排序 排序类型时间复杂度选择排序(Selection Sort) O ( n 2 ) O(n^{2} ) O(n2)合并/归并排序&#xff08;Merge Sort&#xff09; O ( n log ⁡ n ) O(n\log n ) O(nlogn)快速排序(Quick Sort)平均情况 O ( n log ⁡…

Jmeter系列-阶梯加压线程组Stepping Thread Group详解(6)

前言 tepping Thread Group是第一个自定义线程组但&#xff0c;随着版本的迭代&#xff0c;已经有更好的线程组代替Stepping Thread Group了【Concurrency Thread Group】&#xff0c;所以说Stepping Thread Group已经是过去式了&#xff0c;但还是介绍一下 Stepping Thread …

1.2 向量代数

1.向量的概念 定义&#xff1a; 既有大小&#xff0c;又有方向。 向量的表示法 记有向线段的起点A与终点B&#xff0c;从点A指向B的箭头表示了这条线端的方向&#xff0c;线段的长度表示了这条线段的大小&#xff0c;向量就可用这样的一条有向线段来表示&#xff0c; 记作&a…

NTSC和PAL制同步信号模拟输出

NTSC和PAL制同步信号模拟输出 原由&#xff1a;由于我想输出一个NTSC制和PAL制的同步黑场&#xff0c;只需要输出同步信号&#xff0c;之后输出rgb信号给ADV&#xff08;7123&#xff09;后输出到显示屏。下面是我的心路历程和知识总结 一、了解NTSC和PAL PAL&#xff1a;电…

智能化电力运维:数字孪生的崭露头角

随着科技的不断发展&#xff0c;数字孪生技术在各个领域的应用愈发广泛&#xff0c;尤其在电力运维领域&#xff0c;它正发挥着革命性的作用。数字孪生是一种虚拟仿真技术&#xff0c;通过实时模拟真实世界的物理对象或过程&#xff0c;可以从多方面为电力运维带来改变&#xf…

程序员写好简历的5个关键点

程序员就业竞争大&#xff1f;找不到工作&#xff1f;也许&#xff0c;从简历开始你就被淘汰了.... 在很多的公司中&#xff0c;HR的招聘压力是很大的&#xff0c;浏览每个人的简历的时间可能只有20几秒&#xff0c;所以即使你的工作能力十分的强&#xff0c;但如果你没有在简…