NumPy基础用法总结

【Python】Python寻找多维数组(numpy.array)中最大值的位置(行和列) 最近需要从热力图中找出关键点的坐标,也就是极大值的行和列。搜寻了网上的一些方法,在这里总结一下。使用numpy进行多维数组中最大值的行和列搜寻非常的灵活,有以下几种方法可供参考。 二维数组 方法一:np.max()函数 + np.where()函数 如下图所示,x是一个 3×3 的二维np.array,首先使用np.max(x)求出x中的最大值,然后使用np.where函数找出数组x中最大值所在的位置。当然这只是np.where的其中一种用法,np.where是一个非常方便的函数,用法还有很多,具体可 阅读详情

转自https://zhuanlan.zhihu.com/p/26478010,视学算法

numpy可以说是Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas,sklearn等一些Python机器学习和科学计算库,因此在此总结一下常用的用法

Numpy

   1、numpy数组(array)的创建

通过array方式创建,向array中传入一个list实现
一维数组的创建:

二维数组的创建:传入一个嵌套的list即可,如下例

通过arange创建数组:下例中创建一个0~1间隔为0.1的行向量,从0开始,不包括1,第二个例子通过对齐广播方式生成一个多维的数组。

通过linspace函数创建数组:下例中创建一个0~1间隔为1/9的行向量(按等差数列形式生成),从0开始,包括1.

通过logspace函数创建数组:下例中创建一个1~100,有20个元素的行向量(按等比数列形式生成),其中0表示10^0=1,2表示10^2=100,从1开始,包括100

生成特殊形式数组:

生成全0数组(zeros()函数),生成全1数组(ones()函数), 仅分配内存但不初始化的数组(empty()函数)。注意要指定数组的规模(用一个元组指定),同时要指定元素的类型,否则会报错生成随机数组

通过frombuffer,fromstring,fromfile和fromfunction等函数从字节序列、文件等创建数组,下例中生成一个9*9乘法表

   2、显示、创建、改变的数组元素的属性、数组的尺寸(shape)等

   3、改变数组的尺寸(shape)

reshape方法,第一个例子是将43矩阵转为34矩阵,第二个例子是将行向量转为列向量。注意在numpy中,当某个轴的指定为-1时,此时numpy会根据实际的数组元素个数自动替换-1为具体的大小,如第二例,我们指明了c仅有一列,而b数组有12个元素,因此c被自动指定为12行1列的矩阵,即一个12维的列向量。

   4、元素索引和修改

简单的索引形式和切片:

当使用布尔数组b作为下标存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素。使用布尔数组作为下标获得的数组不和原始数组共享数据空间,注意这种方式只对应于布尔数组(array),不能使用布尔列表(list)。(附注:当布尔数组的长度与被索引的数组的长度短时,不足的部分都当作False)

利用条件进行索引:利用不等式等进行索引

多维数组的索引和切片(右边框图中的颜色和左边的指令的颜色相对应):

同样的,可以采用bool型的方式对数组进行索引和切片操作

其实多维数组的索引还是很好理解的,例如下例中,我们可以看到对于一个张量,也就是b,对其索引是,[i,j,k]中的i表示选择第几个二维数组,然后j表示取二维数组中的第几个行向量,k表示取行向量中的第几个元素。

   5、ufunc操作

ufunc是universal function的缩写,它是一种能对数组的每个元素进行操作的函数。numPy内置的许多ufunc函数都是在C语言级别实现的,因此它们的计算速度非常快。下面给一个计算sin函数(sin函数计算数组中全部元素的sin值)的小实例:

四则运算符可以直接用于数组(一维或多维)计算:

比较操作也可直接进行,如下,比较x1和x2各对应元素的大小,返回的是一个bool型数组。同理,可用的操作符有 ‘==’,‘!=’,‘<’,‘>’,‘<=’,‘>=’等。另外可以使用数组的any()或all()方法。只要数组中有一个值为True,则any()返回True;而只有数组的全部元素都为True,all()才返回True。

想要了解更多的numpy自带的ufunc函数,可以查看这篇博客:

numpy教程:数学函数和基本统计函数

https://blog.youkuaiyun.com/pipisorry/article/details/41214819

自定义ufunc函数:frompyfunc(func,nin,nout) 函数可以将计算单个值的函数转换成一个可对数组中每个元素进行计算的ufunc函数。其中nin是输入func的参数的个数,nout是func返回值的个数。如下例。

reduce方法(与Python的reduce函数类似,其沿着axis轴对array进行操作)

accumulate方法(其作用和reduce方法类似,但是会保存中间结果)

outer方法(对其两个参数数组的每两对元素的组合进行运算,计算外积):若数组a的维数为M,数组b的维数为N,则ufunc函数op的outer()方法对a、b数组计算所生成的数组c的维数为M+N,c的形状是a、b的形状的结合。例如a的形状为(2,3),b的形状为(4,5),则c的形状为(2,3,4,5)。

   6、广播操作

广播是针对形状不同的数组的运算采取的操作。当我们使用ufunc函数对两个数组进行计算时,ufunc函数会对这两个数组的对应元素进行计算,因此它要求这两个数组有相同的大小(shape相同)。如果两个数组的shape不同的话(行列规模不等),会进行如下的广播(broadcasting)处理:

1). 让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐。因此输出数组的shape是输入数组shape的各个轴上的最大值(往最大轴长上靠)。

2). 如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错。

3). 当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。

感觉说的不太明白,于是还是用实例说话好了。

   7、矩阵运算

矩阵乘法(dot乘法,注意要符合矩阵乘法规则)

内积(inner,计算向量/矩阵内积):和dot乘积一样,对于两个一维数组,计算的是这两个数组对应下标元素的乘积和;对于多维数组a和b,它计算的结果数组中的每个元素都是数组a和b的最后一维的内积,因此数组a和b的最后一维的长度必须相

计算公式为:

inner(a, b)[i,j,k,m] = sum(a[i,j,:]*b[k,m,:])

外积(outer,计算外积):只按照一维数组进行计算,如果传入参数是多维数组,则先将此数组展平为一维数组之后再进行运算。outer乘积计算的列向量和行向量的矩阵乘积

解线性方程组(solve):solve(a,b)有两个参数a和b。a是一个N*N的二维数组,而b是一个长度为N的一维数组,solve函数找到一个长度为N的一维数组x,使得a和x的矩阵乘积正好等于b,数组x就是多元一次方程组的解。

   8、文件存取(假设有数组array为a,假定类型为int32)

a.tofile(file_name) ,保存a到file_name文件中,file_name为字符串类型,如‘a.txt’等;从文件中读回a数组时需要指明类型,如b=np.fromfile(file_name,dtype=np.float)时会报错,正确的使用方式是b=np.fromfile(file_name,dtype=np.int32)

save和load方法(写入文件和从文件读回都不需要指明类型,存储文件类型为npy格式文件):

np.save(“a.npy”, a)    # 将array a存入a.npy文件中
c = np.load( “a.npy” ) # 从a.npy文件中读回array a

savetxt和loadtxt方法(保存为txt格式文件):

np.savetxt(“a.txt”, a)  # 将array a存入a.txt文件中
np.loadtxt(“a.txt”)     # 从a.txt文件中读回array a

二维数组之周边元素平均值 (随机数生成) //【问题描述】 //求随机生成M*N(M>1,N>1,M和N从键盘输入)个数据是随机种子为824在0-9的元素二维数组的周边数的平均值。 //要求: //1、不在子函数中输出。 //2、使用指定子函数,不得修改。 //float GetAvg(int a[][N],int m,int n)//m是行,n是列 ,返回是平均值 //【输入形式】主函数中行和列。 //【输出形式】先输出M*N矩阵,数据之间一个空格,再输出周边数的平均值,带两位小数。 //【样例输入】3,4 //【样例输出】 //9 阅读详情

相关推荐

Python返回数组中指定行列最大值的索引Numpy.argmax()方法

【小白从小学Python、C、Java】【Python全国计算机等级考试】【Python数据分析考试必会题】● 标题与摘要Python返回数组中指定行列最大值的索引Numpy.argmax()方法● 选择题以下关于argmax()方法的参数正确的是:A axis=1时,输出每行中最大值的索引B axis=0时,输出每行中最大值的索引C axis=None,输出每行中最大值的索引D axis=1时,输出每列中最大值的索引欢迎大家转发,一起传播知识和正能量,帮助到更多人。期待大家提出宝贵改进建议,互相交流,收获

m0_67402774的博客 3468

numpy数组对象ndarry

numpy学习笔记 一.创建数组对象 import numpy as np # 导入numpy重新命名为np 1.数组创建 """ np.array(object, dtype=None,copy=True,order='K',subook=False,ndmin=0) 参数介绍: object:接收array,需创建的数组,无默认。 dtype:接收data-type,需创建的数据类型。 n...

ZQHCSD的博客 955

DBC到ARXML:AUTOSAR CAN通信栈自动化配置完整指南

在AUTOSAR架构下,DBC(CAN数据库文件)与ARXML(AUTOSAR XML)分别扮演着描述总线通信和ECU内部配置的关键角色。DBC定义了网络上的报文与信号,而ARXML则是AUTOSAR工具链交换配置数据的标准格式。在实际的ECU开发中,如何将DBC中的通信信息高效、准确地转换为ARXML,并自动生成可编译的CAN通信栈BSW配置,是许多工程师面临的痛点。借助DaVinci Configurator等工具,我们可以通过自动化导入链路消除手工映射带来的字节序错误、信号起始位偏差等高风险问题,大幅

weixin_34183910的博客 543

numpy.loadtxt() 用法

numpy.loadtxt 用法 读取txt文件 numpy.loadtxt(fname, dtype=, comments=’#’, delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0) 上面给出了loadtxt所有的关键字参数, 这里我们可以来一一解释并给出示例 import nump...

我是天才很好 11万+

MT4-EA自动化交易研究笔记(2022-04-22)

自从接触到mt4的EA自动化交易,更让我这个10多年的老程序员看到了曙光,目前来看也确实出了一点成果,只是是否能稳定盈利有待时间的考验,所以开此专栏,一来做做记录与分析,更好的优化我的EA,二来也希望能与更多的高手交流,以完善我的交易系统

t35254056的博客 2292

自动驾驶仿真(二)—— 基于PreScan与Simulink的联合仿真

自动驾驶仿真软件介绍二—— PreScan与Simulink联合仿真1. Prescan仿真软件2. Prescan与Simulink联合仿真2. 1 Prescan和matlab软件安装2. 2 联合仿真配置3. 联合仿真实例3.1 一辆不按法规行驶的小车3.2 另一辆的正常行驶的小车3.3 视觉辅助摄像机3.4 传感器检测4. 系列学习视频教程5. 参考学习的书目教材 上一篇博文简单介绍了Carsim与Simulink联合仿真,接着这篇就再继续简单介绍另一款自动驾驶仿真软件Prescan,并且简单做个P

zhudj08的博客 1万+

numpy的基本用法

引言 numpy和pandas是数据分析中常用的对大量数据处理的库,使用起来十分方便。pandas底层技术也是numpy。numpy以高性能著称,底层用c++搭建,对数据矩阵的运算十分迅速。 数据分析中数据处理的一般流程 数据分析数据预处理数据处理数据展示 数据收集的方法 1,网络爬虫 2,公开数据集(kaggle) 3, 其它途径收集的数据 数据预处理 1,归一化:使数据看起来是一样的。 2,二值化:设置标准值,将数据集分成两个部分,一般用于图像处理。 3,维度变化 4,去重:去掉重复的数据。 5,无效

m0_46260305的博客 994

SAP ABAP实战:手把手教你用BAPI_BILLINGDOC_CREATEMULTIPLE批量开票(附完整代码与避坑指南)

本文详细解析了SAP ABAP中BAPI_BILLINGDOC_CREATEMULTIPLE批量开票的全流程,包括参数配置、事务控制、错误处理及性能优化。通过实战案例和完整代码示例,帮助开发者高效处理大批量发票生成任务,避免常见陷阱,提升开发效率。

weixin_34101914的博客 267

numpy基本用法

NumPy是 Python 中用于科学计算的基础库,提供了高性能的多维数组对象以及处理这些数组的工具。以下是NumPy。

weixin_70682362的博客 322

【大模型应用开发-FastAPI框架】(八)Sqlalchemy+postgresql简单增删改查

语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。SQLAlchemy的理念是,的量级和性能重要于对象集合;而对象集合的抽象又重要于表和行。因此,SQLAlchemy采用了类似于。社区中成为广泛使用的ORM工具之一,不亚于Django的ORM框架。和declarative等可选插件可以让用户使用声明语法。SQLAlchemy首次发行于2006年2月,并迅速地在。SQLAlchemy“采用简单的。二、安装postgresql。一、SQLAlchemy简介。的数据映射模型,而不是其他。

2098

【保姆级教程】基于UNet++&MobileNetv2的语义分割模型从训练到RK3588部署:让边缘AI落地效率提升300%

通过SMP库一键构建encoder_name="mobilenet_v2", # 选择MobileNetv2作为骨干encoder_weights="imagenet", # 加载预训练权重加速收敛in_channels=3, # 输入图像通道数(RGB)classes=29, # Cityscapes数据集类别数activation=None # 输出无激活,便于后续损失计算本教程从“模型设计-训练-转换-边缘部署”全链路拆解了。

m0_71589036的博客 89

array用法 numpy_NumPy总结(基础用法)

numpy可以说是Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas,sklearn等一些Python机器学习和科学计算库,因此在此总结一下常用的用法。引入numpy库的方式:import numpy as np1、numpy数组(array)的创建通过array方式创建,向array中传入一个list实现 一维数组的创建:二维数组的创建:...

weixin_42347465的博客 975

最佳RANSAC算法拟合矩形的实现(基于PCL库)

最佳RANSAC算法是一种常用的参数估计方法,用于从数据集中拟合出最佳的模型。在计算机视觉和图像处理领域,最佳RANSAC算法常用于拟合几何形状,如矩形。本文将详细介绍如何使用点云库(PCL)中的最佳RANSAC算法来拟合矩形,并提供相应的源代码。

JbPatch的博客 1544

Python中Numpy的基础用法

Python中numpy的基础用法 Numpy是科学计算中非常常用的一个库,numpy中经常用到数组这种类型,Python中并没有数组的概念,而数组这个概念在其它语言中却很常见,如C语言。数组跟列表的主要区别在于,列表中数据的类型可以不同,而数组中必须由同一类型的数据组成。 那么Python已有列表类型,为什么需要一个数组对象(类型)? • 数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据 • 设置专门的数组对象,经过优化,可以提升这类应用的运算速度 观察:科学计算中,一个维度所有数据的类型往往

weixin_50775137的博客 258

Python爬虫实战:如何爬取汽车之家报价信息

本文通过实战介绍了如何使用Python编写爬虫,抓取汽车之家网站的车型、价格、配置等信息。在爬虫实现过程中,我们使用了requests库来发送HTTP请求,使用解析HTML页面,提取嵌入的JSON数据,并将数据存储到CSV文件中。同时,我们还介绍了如何使用反爬虫策略(如随机User-Agent、请求延时、代理池等)来规避反爬虫机制,确保爬虫的稳定性。

2201_76125261的博客 1595

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

numpy-squeeze用法

numpy-squeeze用法 import numpy as np a = np.random.randn(1,1) b = np.random.randn(1) print(a) print(a.shape) a1 = np.squeeze(a) print(a1) print(b) print(b.shape) b1 = np.squeeze(b) print(b1) ---------...

qq_36697196的博客 280

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Numpy常用函数用法大全

abcdefghijklmnopqrstuvwxyz 函数名 描述 array 创建一个np数组 arange dot exp max log reshape sum

z21198061a的博客 454

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

array用法 numpy_Numpy基础20问

1、什么是numpy?一言以蔽之,numpy是python中基于数组对象的科学计算库。提炼关键字,可以得出numpy以下三大特点:拥有n维数组对象;拥有广播功能(后面讲到);拥有各种科学计算API,任你调用;2、如何安装numpy?因为numpy是一个python库,所以使用python包管理工具pip或者conda都可以安装。安装python后,打开cmd命令行,输入:pip install n...

weixin_36312301的博客 2898

Numpy中reshape的用法

目录 目录 numpy中reshape函数的三种常见相关用法 reshape(n,-1),将数组转换成 n 行: reshape(-1,n),将数组转换成 n 列: numpy中reshape函数的三种常见相关用法 numpy.arange(n).reshape(a, b) 依次生成n个自然数,并且以a行b列的数组形式显示 np.arange(16).reshape(2,8) #生成16个自然数,以2行8列的形式显示 # Out: # array([[ 0, 1, 2, 3, ..

qq_45916211的博客 5万+

numpy基本用法讲解

目录1.创建数组的方法:2.数组的切片操作及改变数组形状的方法3.矩阵运算4.数组中元素运算操作 1.创建数组的方法: 最基本:a=np.array([1,2]),将传入的python列表转化为np数组,注意:源数据是ndarray数据时,array是创建一个新的数组,而 asarray仍旧使用原来的数据源。所以使用asarray创建的数组改变时,原数组也改变了,一般我们都用array. import numpy as np a=np.arange(0,10,2)#创建起始为0,结束为10,但是不包括1

qq_46244851的博客 918

numpy基础用法

入门numpy 基础操作

n00bk1ng的博客 1786

numpy的基本用法,以及创建numpy的单位矩阵

weixin_44274975的博客 7937

python之numpy的基础用法

数组-numpy 1.numpy基础 在使用reshape时不时原地操作,具有返回值,除非使用赋值操作才会改变原有值; 关于展开数组的情况如下: 从上面我们可以看出,69行输出的并不是一维数组如果操作b.reshape(12,)则是一维的。当 然使用flatten也不会产生原地操作。 有时,在使用numpy的时候我们可能还会遇到对数组加减乘除的一些情况,例如以下的几种情况: 如果出现除以0的情况则会显示如下: 还有一种情况就是在np.array中出现相同数组进行计算的

ws2364764595的博客 721

python numpy的用法

zeros_arr = np.zeros((2, 3)) # 创建一个2行3列的数组,元素都是0。ones_arr = np.ones((3, 3)) # 创建一个3行3列的数组,元素都是1。full_arr = np.full((2, 2), 9) # 创建一个2行2列的数组,元素都是9。print(np.sin(arr)) # 输出每个元素的sin值。print(np.log(arr)) # 输出每个元素的log值。print(arr.shape) # 输出:(2, 3)

2302_79785064的博客 816

详细介绍numpy在python中的用法

NumPy是 Python 科学计算库中非常重要的库,主要用于处理大型多维数组和矩阵运算。它提供了大量数学函数来操作这些数组。NumPy的核心是ndarray对象,该对象是一个多维数组,可以存储同类型的数据。下面是NumPy。

科技追踪者的专栏 6400
上一篇: 为什么“晚上9点钟洗澡的大学生成绩更好”?
下一篇: SVM 和最优化
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值