前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python NumPy 基础

Python NumPy 基础

作者头像
Alan Lee
发布于 2019-05-26 13:39:18
发布于 2019-05-26 13:39:18
1.3K0
举报
文章被收录于专栏:Small CodeSmall Code

前言

这两天读完《利用Python进行数据分析 这本书的第4章:NumPy 基础:数组和矢量计算 后,在进行下一步阅读高级应用前,先整理本章内容,做个笔记备查,也好加深印象。在往下看前请确保你已经安装了NumPy 库,并且已经使用 import numpy as np 加载numpy库。如果 还没有安装,那么可以在cmd(windows下)中使用 pip install numpy 命令安装,ubuntu下也可以使用 sudo apt-get install python-numpy 命令安装。

题外话:python的数据格式让我这种熟练了matlab的用户感觉好不习惯。>_<|||

创建数组,数组索引以及类型转换

  1. 使用np.array来创建数组(ndarray),每个数组都有shape属性和dtype属性,shape表示数组维数,dtype 表示数组元素类型。
  1. 使用astype 方法转换数组的dtype这个方法不会对原数组进行改动,会创建一个新的数组,也就是说原数组还是原来的dtype
  1. 使用np.zeros(), np.ones(), np.eye(), np.empty() 创建特殊数组,这一点和matlab还是差不多的,不过需要注意的是,如果你要创建一个2*3的全零数组,那么就应该这么写:np.zeros((2, 3)) ,也就是说传入的是一个元祖,如果你熟悉matlab你可能就会直接写np.zeros(2, 3),这在python中是不正确的。此外,在用np.empty()创建空数组时,实际上返回的并不是空数组,而是一些未初始化的垃圾值。np.arange() 是一个很有用的函数,返回给定范围内的连续值,注意下标从0开始,不包括末尾值
  1. 下面是一些常用的数组创建函数
  1. 数组索引和matlab相同点还是很多的,只是这里面可以用负数来表示从后往前数以及不包括冒号后面的索引(左闭右开区间)等等。有一点很需要注意,数组切片是原始数组的视图,这就是说数据不会被复制到新的数组切片上,对数组切片的任何修改都会直接反应到原数组上,或者说数组切片只是一个对原数组内容的引用, 如下图。

如果不想要这样的效果,想要一个独立的新数组,那么需要使用显示复制函数,例如arr_independent = arr[5:8].copy()。 对于多维数组的索引,需要注意的是有一个“轴”的问题(matlab用户肯定很奇怪),其实就是行和列,下面有个图说明。

再用个例子来说明下高维数组的索引方式。

除此之外还有一个布尔型索引,这个和matlab是一样的。

数组转置和轴对称

  1. 对于二维数组,可以使用T方法进行转置。
  1. 对于高维数组,需要用到 数组的transpose函数,参数是一个由轴编号组成的元祖,下面引用一段官网对其参数的解释,

如果传入的是一个元组,那么假设用i表示第j(从0开始)个位置的数值,那么转置之后的数组的第j个轴就是原数组的第i个轴(不得不吐槽这什么玩意儿,太别扭了),下面用一个例子来说明,

这里原始数组是一个2×2×4的三维数组,transpose的参数是元组(1, 0, 2),对应的下标索引为(0, 1, 2),对比可以知道,arr.transpose(1, 0, 2) 的意思就是将原数组 arr 的(0, 1)位置和(1, 0)位置互换,以此类推。

简洁的where函数

numpy.where 函数是三元表达式 x if condition else y 的矢量化版本。

其实和 Java 中的问号表达式也是异曲同工。这种用法很多时候真的很方便(废话),比如图像处理中我想把像素矩阵中大于110的全都置为1,小于110的都置为0,那么就可以这么写np.where(matrix > 110, 1, 0)。 同样用随机数举一个例子,

====== 2016-06-27更新 ====== numpy.where 函数在求一个数组最大值/最小值所在位置的时候也很有用,例如:

其中另一种方法求最大值所在位置使用了numpy.argmax 函数,该函数可直接返回最大值位置(啰嗦了~~)。

数学和统计函数

主要就是计算均值、方差、求和、最大值、最小值、累计和和累计积等。 需要注意的:假设有一个 5×4 的二维数组 arr ,那么np.mean(arr) 表示对整个二维数组的平均,即全部加起来除以个数,并不是matlab中的默认对列求平均。如果想要得到对某个轴向求平均,可以加上axis参数,如np.mean(arr, 1) 就是对行求平均。其他函数类似。

基本数组统计方法

===== 2016-06-29更新 ===== 注意,numpy.std() 求标准差的时候默认是除以 n 的,即是有偏的,而pandas.std() 默认是除以n-1 的,即是无偏的,如果想和numpy.std() 一样有偏,需要加上参数ddof=0 ,即pandas.std(ddof=0)

线性代数

  • 矩阵乘法:使用dot函数而不是 *,使用 * 得到的结果等于是matlab中使用点乘.* 的结果,使用dot函数才是真正的矩阵乘法。
  • 矩阵求逆、矩阵分解、行列式:函数名同matlab,使用前要先导入:from numpy.linalg import inv, qr 等等,以此类推。
  • 一些常用的线代函数

随机数的生成

这里着重说一下randnnormal。 书上在使用randn 的时候都是直接使用,但是我自己输入的时候却必须要这样np.random.randn。 此外,randn 默认只能生成标准正太分布的随机数,想要使用randn来生成非标态分布的随机数,那么可以这么写:sigma * np.random.randn(size) + mu 。但是使用normal就可以轻松的生成各种正态分布的随机数:normal(loc=0.0, scale=1.0,size=None),loc是均值,scale是标准差randint 是从给定的范围内随机选取整数,注意是闭区间

部分numpy.random函数

最后,MATLAB和NumPy

NumPy很多地方都是借鉴matlab的,所以说有很多相似之处,也有一些不同之处,可以参考下面的对照表,表格来自Numpy for Matlab users

真的最后 the real END

关于数组的集合运算以及我的一些测试(太懒就不写了,直接拍我记在书上的。。),就是setdiff1d(x, y)setxor1d(x, y) 的一些细微差别,后者对于x和y的顺序貌似不感冒,如有错,欢迎指正!

断断续续写了快一天,我真是服了,whatever,its done!

See you~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年04月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 数据处理:NumPy库
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:Python 数据处理:NumPy库 ---- Python 数据处理:NumPy库 1.NumPy简介 2.NumPy的ndarray:一种多维数组对象 2.1 创建ndarray 2.2 ndarray的数据类型 2.3 NumPy数组的运算 2.4 基本的索引和切片 2.5 切片索引 2.6 布尔型索引 2
小嗷犬
2022/11/15
5.7K0
Python 数据处理:NumPy库
Numpy
numpy(numerical Python) 是 Python 数值计算最重要的基础包,大多数提供科学计算的包都是用 NumPy 的数组为构建基础。 NumPy 可以用于数值计算的一个重要原因是因为他能处理大数组的数据:
爱编程的小明
2022/09/05
1.2K0
Numpy
numpy科学计算包的使用1
Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。
听城
2018/04/27
1.3K0
numpy科学计算包的使用1
AI基础:Numpy简易入门
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA 用其处理一些本来使用 C++,Fortran 或 Matlab 等所做的任务。
统计学家
2019/12/05
7060
python的numpy入门简介
arr=np.array(data)    #将列表转为numpy.ndarray  np.array([2,4])
用户7886150
2021/01/07
1.5K0
猿创征文|数据导入与预处理-第2章-numpy
numpy作为高性能科学计算和数据分析的基础包,它是众多数据分析、机器学习等工具的基础架构,掌握numpy的功能及其用法将有助于后续其他数据分析工具的学习。
用户2225445
2022/11/12
5.8K0
猿创征文|数据导入与预处理-第2章-numpy
NumPy从入门到放弃
公众号本文地址:https://mp.weixin.qq.com/s/EocThNWhQlI2zeLcUApsQQ
愷龍
2024/08/09
1940
NumPy从入门到放弃
Python关于Numpy的操作基础
  NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
py3study
2020/01/10
9110
Python关于Numpy的操作基础
Numpy基础知识点汇总
1、概述 Numpy是高性能科学计算和数据分析的基础包,它的部分功能如下: 1)ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 2)对整组数据进行快速运算的标准数学函数 3)用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 2、ndarray的创建 这一节,我们主要关注ndarray数组的创建,我们主要有以下几种方式: 数组转换 创建数组的最简单的方法就是使用array函数,将Python下的list转换为ndarray。 #通过数组创建一个ndarray data1
石晓文
2018/04/11
1.6K0
数组计算模块NumPy
轴的概念  :轴是NumPy模块里的axis,指定某个axis就是沿着axis做相关操作 
@小森
2024/03/15
1090
数组计算模块NumPy
Python基础——Numpy库超详细介绍+实例分析+附代码
NumPy是高性能科学计算和数据分析的基础包,计算速度要比python自带的函数快很多,非常好用。一般不需要安装,装Python就自动装了,如果需要:
用户7886150
2021/01/05
1.1K0
python中的numpy模块
对于python中的numpy模块,一般用其提供的ndarray对象。  创建一个ndarray对象很简单,只要将一个list作为参数即可。  例如:
狼啸风云
2019/01/18
5.2K0
《利用Python进行数据分析·第2版》第4章 NumPy基础:数组和矢量计算4.1 NumPy的ndarray:一种多维数组对象4.2 通用函数:快速的元素级数组函数4.3 利用数组进行数据处理4.
NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。 NumPy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++、Fortran等语言编写的代码的A C API。 由于NumPy提供了一个
SeanCheney
2018/04/24
4.9K0
《利用Python进行数据分析·第2版》第4章 NumPy基础:数组和矢量计算4.1 NumPy的ndarray:一种多维数组对象4.2 通用函数:快速的元素级数组函数4.3 利用数组进行数据处理4.
numpy线性代数基础 - Python和MATLAB矩阵处理的不同
http://blog.csdn.net/pipisorry/article/details/39087583
用户7886150
2021/01/03
1.6K0
Python Numpy基础教程
本文是一个关于Python numpy的基础学习教程,其中,Python版本为Python 3.x
oYabea
2020/09/07
8200
numPy的一些知识点
numpy 早就用过了,但是长时间不用的话对其中的一些知识点又会忘记,又要去网上翻看各种博客,干脆自己把常用的一些东西记下来好了,以后忘了的话直接看自己写的笔记就行了
棒棒鸡不棒
2022/09/01
9600
numPy的一些知识点
Python-Numpy数组计算
1、NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。 2、NumPy的主要功能:
用户7886150
2021/01/06
2.4K0
NumPy之:ndarray多维数组操作
NumPy一个非常重要的作用就是可以进行多维数组的操作,多维数组对象也叫做ndarray。我们可以在ndarray的基础上进行一系列复杂的数学运算。
程序那些事
2021/06/09
9050
Python基础之数组和向量化计算总结
例如:import numpy as np data1=[6,7.5,8,0,1]     #创建简单的列表 print(data1) arr1=np.array(data1)    #将列表创建数组 print(arr1)
py3study
2020/01/16
8450
再见了,Numpy!!
什么Python方面的,Numpy、Pandas,大数据处理方面的Hive、Spark、Flink等等等等。
Python编程爱好者
2023/12/12
2850
再见了,Numpy!!
相关推荐
Python 数据处理:NumPy库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档