Python中的Numpy 面向数组编程常见操作
目录
- 数组编程
- 简单例子
- 逻辑条件作为数组操作
- 数学和统计方法
- 布尔数组的方法
- 排序
- 唯一值和其他的逻辑集合
数组编程
使用Numpy数组可以使你利用简单的数组表达式完成多项数据操作任务,而不需要编写大量的循环,这个极大的帮助了我们高效的解决问题。我们都知道向量化的数组操作比纯Python的等价实现在速度这一方面快很多,至于多少(一到两个数量级)甚至更多,生活需要慢节奏,但是计算就不可以了,掌握高效的计算模型,可以让数据分析如虎添翼!
简单例子
我们生成从-3.14--3.14,按照0.01的间隔生成,最后计算表达式X^2+Y^2的值
逻辑条件作为数组操作
numpy.where函数是三元表达式 x if condition else y 的向量化版本,假设我们有一个布尔值数组和两个数值数组
首先我们要明确的是我们自己去写这个逻辑来进行判断的话就比较的失败,因为遇到比较大的数组,速度会比较的慢,因为所有的代码工作都是解释器Python代码完成的,其次如果是多维的那就无法凑效了,但是我们使用np.where就可以简单的完成。
在np.where的第二个和第三个参数并需要数组,它们可以是标量,where在数据分析中的一个典型用法就是根据一个数组来生成一个新的数组。假设你有一个随机生成的矩阵数据,并且你想要其中的正值都有替换为2,所有的负数都替换为-2,使用这个函数轻松解决。
数学和统计方法
许多关于计算整个数组统计值或关于轴向数据的数据函数,可以作为数组类型的方法被调用。你可以使用聚合函数(通常也叫缩减函数),比如sum,mean,STD(标准差)既可以直接调用也可以使用顶层的numpy函数
对于统计方法我们的案例其实差不多,至于怎样去了解那就需要自己去琢磨了,下面有一个基础数组的统计方法
基础数组的统计方法:
sum |
计算总数 |
mean |
数学平均,0长度的数组平均值为NaN |
std,var |
标准差与方差 |
min,max |
最小值和最大值 |
argmin,argmax |
最小值和最大值的位置 |
cumsum |
从0开始元素累计和(等差数列求和) |
cumprod |
从1开始元素累计积(阶乘) |
一行代码计算1+2+....10数之和
布尔数组的方法
sum通常可以计算布尔值数组中true的个数,对于布尔数组,有两个非常常用的方法any和all。any用于检查数组中是否至少有一个true,如果有一个以上那么它就会返回true,any检查是否每一个值都是true,如果有一个不是true那就返回false。
排序
和Python类建列表相似,numpy数组可以使用sort方法按照位置排序
唯一值和其他的逻辑集合
介绍:
numpy包含一些针对一维ndarray的基础集合操作。常用的一个方法是np.unique返回的是包含数组唯一的排好序的集合,首先集合肯定是唯一的,那么我们在进行排序,解决它的无序性
应用场景假设有一个数组里面有很多值,而且有大量的重复的值我们需要对其进行排序,就可以使用这个方法了,下面是一些数组集合的操作
数组集合操作:
unique(x) 计算X的唯一值,并排序 intersect1d(x,y) 计算X和Y的交集,并排序 union1d(x,y) 计算X和Y的并集,并排序 in1d(x,y) 计算X中的元素是否包含在Y中,返回一个布尔值数组 setdiff1d(x,y) 差集,在X中但不在Y中的元素 setxor1d(x,y) 异或集,在X或Y中,但不属于X,Y交集的元素
到此这篇关于Python中的Numpy 面向数组编程常见操作的文章就介绍到这了,更多相关Python Numpy 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
利用Python NumPy库及Matplotlib库绘制数学函数图像
目录 前言 NumPy与Matplotlib 函数绘图 所需库函数语法 导入所需模块 一元一次函数 一元二次函数 指数函数 正弦函数 余弦函数 高级玩法 总结 前言 最近开始学习数学了,有一些题目的函数图像非常有特点,有一些函数图像手绘比较麻烦,那么有没有什么办法做出又标准又好看的数学函数图像呢? 答案是有很多的,有很多不错的软件都能画出函数图像,但是,我想到了Python的数据可视化.Python在近些年非常火热,在数据分析以及深度学习等方面得到广泛地运用,其丰富的库使其功能愈加强大. 这里我
-
详解Python如何循环遍历Numpy中的Array
目录 1. 引言 2. 使用For循环遍历 3. 函数 nditer() 4. 函数 ndenumerate() 5. 结论 1. 引言 Numpy是Python中常见的数据处理库.Numpy是 Numerical Python的缩写,它是数据科学中经常使用的库.Numpy专门用于处理矩阵运算,因为它包含各式各样的处理函数.在本文中,我们主要用于学习如何迭代遍历访问矩阵中的元素. 闲话少说,我们直接开始吧! 2. 使用For循环遍历 首先我们来看个例子,使用循环来遍历数组,样例代码如下: imp
-
Python numpy之线性代数与随机漫步
目录 线性代数 伪随机数生成 随即漫步 示例 线性代数 线性代数,矩阵计算,优化与内存:比如矩阵乘法,分解,行列式等数学知识,是所有数组类库的重要组成部分.和MATLAB等其他语言相比,numpy的线性代数中有所不同的是矩阵相乘不是点积运算而是逐个元素计算,因此在numpy里面都有一个特定的函数来计算,它就是dot, 语法如下: numpy之线性代数函数 diag 将一个方阵的对角(或非对角)元素作为一维数组返回,或者将一个一维数转换为一个方阵,并且在非对角线上有零点 dot 矩阵点乘 trac
-
python numpy.ndarray中如何将数据转为int型
目录 numpy.ndarray中数据转为int型 出现错误only size-1 arrays can be converted to Python scalars numpy.ndarray中数据转为int型 首先了解内容与类型 >>>print(a) (array([[0.01124722], [0.21752586], [0.05586815], [0.03558792]]), array([[ 327], [ 366], [1887], [1153], [1792]], dty
-
python数学建模(SciPy+ Numpy+Pandas)
目录 前言 SciPy 学习 SciPy基本操作 1-求解非线性方程(组) 2-积分 3-最小二乘解 4-最大模特征值及对应的特征向量 Numpy学习(续) 1 Numpy 数学函数 1-1三角函数 2-舍入函数 2-1 numpy.around() 2-2 numpy.floor() 2-3 numpy.ceil() 3 Numpy算术函数 Pandas学习(续) Pandas 数据排序 DataFrame的排序 Pandas字符串处理 前言 SciPy 是一个开源的 Python 算法库和数
-
Python numpy线性代数用法实例解析
这篇文章主要介绍了Python numpy线性代数用法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 numpy中线性代数用法 矩阵乘法 >>> import numpy as np >>> x=np.array([[1,2,3],[4,5,6]]) >>> y=np.array([[7,8],[-1,7],[8,9]]) >>> x array([[1, 2, 3], [4
-
Python之Numpy 常用函数总结
目录 通用函数 常见的简单数组函数 一元函数 二元函数 通用函数 常见的简单数组函数 先看看代码操作: mport numpy as np # # 产生一个数组 arr=np.arange(15) arr >>array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]) # 对里面的元素进行开根号处理 np.sqrt(arr) >>array([0. , 1. , 1.41421356, 1.73205081, 2. , 2.
-
Python中11种NumPy高级操作总结
目录 1.数组上的迭代 2.数组形状修改函数 1.ndarray.reshape 2.ndarray.flat 3.ndarray.flatten 3.数组翻转操作函数 1.numpy.transpose 2. numpy.ndarray.T 3.numpy.swapaxes 4.numpy.rollaxis 4.数组修改维度函数 1.numpy.broadcast_to 2.numpy.expand_dims 3.numpy.squeeze 5.数组的连接操作 1.numpy.stack 2.
-
Python中的Numpy 面向数组编程常见操作
目录 数组编程 简单例子 逻辑条件作为数组操作 数学和统计方法 布尔数组的方法 排序 唯一值和其他的逻辑集合 数组编程 使用Numpy数组可以使你利用简单的数组表达式完成多项数据操作任务,而不需要编写大量的循环,这个极大的帮助了我们高效的解决问题.我们都知道向量化的数组操作比纯Python的等价实现在速度这一方面快很多,至于多少(一到两个数量级)甚至更多,生活需要慢节奏,但是计算就不可以了,掌握高效的计算模型,可以让数据分析如虎添翼! 简单例子 我们生成从-3.14--3.14,按照0.01的间
-
Python中的二维数组实例(list与numpy.array)
关于python中的二维数组,主要有list和numpy.array两种. 好吧,其实还有matrices,但它必须是2维的,而numpy arrays (ndarrays) 可以是多维的. 我们主要讨论list和numpy.array的区别: 我们可以通过以下的代码看出二者的区别 >>import numpy as np >>a=[[1,2,3],[4,5,6],[7,8,9]] >>a [[1,2,3],[4,5,6],[7,8,9]] >>type(a
-
python中的Numpy二维数组遍历与二维数组切片后遍历效率比较
在python-numpy使用中,可以用双层 for循环对数组元素进行访问,也可以切片成每一行后进行一维数组的遍历. 代码如下: import numpy as np import time NUM = 160 a=np.random.random((NUM,NUM)) start = time.time() for i in range(NUM): for j in range(NUM): if a[i][j] == 1.0: pass end1
-
Python中的 Numpy 数组形状改变及索引切片
目录 1.改变数组形状 2.索引和切片 1.改变数组形状 数组的shape属性返回一个元组,包括维度以及每个轴的元素数量,Numpy 还提供了一个reshape()方法,它可以改变数组的形状,返回一个新的数组. 例如: a = np.array([1,2,3,4,5,6,7,8]) 转换成二维数组: b = a.reshape((2,4)) 转换成三维数组: c = a.reshape((2,2,2)) 但是需要注意的是,修改后的数组元素个数与原数组元素个数必须是一致的,不一致会报错. 例如执行
-
python中字符串变二维数组的实例讲解
有一道算法题题目的意思是在二维数组里找到一个峰值.要求复杂度为n. 解题思路是找田字(四边和中间横竖两行)中最大值,用分治法递归下一个象限的田字. 在用python定义一个二维数组时可以有list和numpy.array两种方式,看了几篇python中二维数组的建立的博客发现大多都是建立的初始化的二维数组,而我需要通过文件读取得到的是字符串,再把字符串转换为二维数组,找不到解决方法还是决定自己来转换. 首先,最开始的字符串输出如下,数字之间有空格 思路就是把先按换行符进行切片,再对每一行的字符再
-
在Python中等距取出一个数组其中n个数的实现方式
应用场景: 实验中不断得到新数据,想将数据图形化,但随着时间推移,数据越来越多, 此时需要我们等距选择数据列表中固定数量的数据,来进行图形化. 注:保留首尾数据. import numpy as np a = np.arange(0, 10) b = np.arange(0, 15) c = np.arange(0, 20) d = np.arange(0, 30) e = np.arange(10, 40) f = np.arange(0, 100) def pick_arange(arang
-
Python中的套接字编程是什么?
Why use Sockets? 套接字是网络的基础.它们使在两个不同程序或设备之间的信息传输成为可能.例如,当您打开浏览器时,您作为客户端正在与服务器建立连接以进行信息传输. 在深入探讨这种通信之前,让我们首先弄清楚这些插座的确切含义. What are Sockets? 一般而言,套接字是为发送和接收数据而构建的内部端点.单个网络将具有两个套接字,每个通信设备或程序一个.这些套接字是IP地址和端口的组合.根据所使用的端口号,单个设备可以具有n个插槽.不同的端口可用于不同类型的协议.请看以下图
-
浅析Python中的套接字编程
目录 一.为什么使用套接字 二.什么是套接字 三.如何在Python中实现Socket编程 四.什么是服务器 五.什么是客户端 5.1.Echo Client-Server 5.2.Multiple Communications 六.传输Python对象 6.1.Python pickle模块 6.2.如何使用pickle模块传递python对象结构 一.为什么使用套接字 套接字是网络的基础.它们使在两个不同程序或设备之间的信息传输成为可能.例如,当您打开浏览器时,您作为客户端正在与服务器建立连
-
Python中的Numpy 矩阵运算
目录 在学习线性代数时我们所接触的矩阵之间的乘法是矩阵的叉乘,有这样一个前提: 若矩阵A是m*n阶的,B是p*q阶的矩阵,AB能相乘,首先得满足:n=p,即A的列数要等于B的行数.运算的方法如下图: 当时学线性代数时老师教的更为直观记法: 点乘则是这样: 假如有a,b两个矩阵,在Matlab中我们实现点乘和叉乘的方式分别如下: a.*b %表示点乘 a*b %表示叉乘 下面我们来看看python中的操作: import numpy as np a = np.arange(1, 10).resha
-
Python中的Numpy 矩阵运算
目录 在学习线性代数时我们所接触的矩阵之间的乘法是矩阵的叉乘,有这样一个前提: 若矩阵A是m*n阶的,B是p*q阶的矩阵,AB能相乘,首先得满足:n=p,即A的列数要等于B的行数.运算的方法如下图: 当时学线性代数时老师教的更为直观记法: 点乘则是这样: 假如有a,b两个矩阵,在Matlab中我们实现点乘和叉乘的方式分别如下: a.*b %表示点乘 a*b %表示叉乘 下面我们来看看python中的操作: import numpy as np a = np.arange(1, 10).resha
随机推荐
- cemtos 7 linux 安装与卸载 tomcat 7的教程
- 使用Kivy将python程序打包为apk文件
- 让sql2005运行在独立用户下出现 WMI 提供程序错误的解决方式
- mysql服务启动却连接不上的解决方法
- node.js插件nodeclipse安装图文教程
- JavaScript实际应用:innerHTMl和确认提示的使用
- ASP.NET中的Cache使用介绍
- 3个PHP多维数组转为一维数组的方法实例
- 从Python的源码浅要剖析Python的内存管理
- Android RadioButton 图片位置与大小实例详解
- avalon js实现仿google plus图片多张拖动排序附源码下载
- MySql二进制连接方式详解
- JQuery与JS里submit()的区别示例介绍
- 通过脚本控制指定内容不能被选择
- Bootstrap基本插件学习笔记之折叠(22)
- 使用OpenGL实现3D立体显示的程序代码
- Android Gradle Build Error:Some file crunching failed, see logs for details的快速解决方法
- 浅谈c++调用python链接的问题及解决方法
- C#枚举中的位运算权限分配浅谈
- PHP - Html Transfer Code