标签:函数 Python numpy 索引 数组 科学 np 数据
Python 数据科学库(一)
一、numpy 模块
(一)概述
数值Python包,是Python进行科学计算的一个基础包,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。
导入
import numpy as np (约定俗成的写法)
(二)ndarray
1. 概述
N维数组
一种由相同类型的元素组成的多维数组,元素个数事先指定好,不会发生改变
2. 数据类型
创建数组时可以通过dtype属性显示指定数据类型,如果不指定,numpy会自己推断出合适的数据类型,所以一般无需显示指定
a.astype(类型名) 转换数据类型,得到新数组
3. 创建
函数名 | 作用 |
---|---|
a = np.array(序列) | 接收一个普通的Python序列(元组、列表),转成ndarray |
a = np.zeros(形状元组) | 创建指定长度或形状的全零数组 |
a = np.ones(形状元组) | 创建指定长度或形状的全1数组 |
a = np.empty(形状元组) | 创建一个没有任何具体值的数组,就是一些未初始化的值 |
a = np.arrange(开始值,终止值(不包括),步长) | 类似于Python的range函数,通过指定开始值、终止值、步长来创建一位数组(数组不包括终止值) |
a = np.linspace(开始值,终止值,元素个数) | 创建等差数列,返回一个一维数组,可以通过endpoint关键字指定是否包括终止值,缺省设置是包括终止值 |
a = np.logspace(开始值,终止值,元素个数) | 和linspace类似,不过它是创建等比数列 |
a = np.random.random(形状元组) | 使用随机数填充数组 |
4. 属性
属性名 | 作用 |
---|---|
ndim | 维度数量 |
shape | 表示各个维度大小的元组,即数组的形状 |
dtype | 一个用于说明数组元素类型的对象 |
size | 元素总个数,即shape中各个数相乘 |
5. 函数
a.reshape(维度1,维度2...)
注意
- 可以改变数组的形状,但是数组总个数不改变。
- 如果值为-1,代表当前维度的个数自动推导
- 和原数组共享内存空间
(三)numpy 基本操作
1. 数组与标量、数组之间的运算
(1)概述
数组不用循环即可对每个元素执行批量运算,这通常叫做矢量化,即用数组表达式代替循环的做法
矢量化数组运算性能比纯Python快上一两个数量级
同型数组之间的任何算数运算都会将运算运用到元素级
(2)使用
直接使用+ - * / 操作数组
2. 矩阵的乘法
a1.dot(a2)
np.dot(a1, a2)
arr = np.ones((3, 4))
arr1 = np.ones((4, 5))
arr.dot(arr1)
3. 数组的索引与切片
(1)索引
① 普通索引(和数组使用相同)
② 布尔型索引
索引位置,可以放条件判断用来过滤数据
单独使用条件判断,返回每个位置判断的结果是True还是False
逻辑运算符
名称 | 作用 |
---|---|
& |
与 |
| |
或 |
~ |
非 |
③ 花式索引
指用整数数组进行索引
(2)切片
可以在各个维度上单独切片,如果保留某维度使用 : 冒号,不指定起始和终止值
切片是原来数组的一个视图,和原数组共享内存
3. 数组的转置与轴对称
a.transpose()
a.T
转置的和原来数组共享引用
4. 通用函数:快速的元素级数组函数
(1)一元函数
函数名 | 作用 |
---|---|
np.abs() | 绝对值 |
np.fabs() | 绝对值 |
np.sqrt() | 开方 |
np.square() | 平方 |
np.ceil() | 右取整 |
np.floor() | 左取整 |
np.rint() | 四舍五入 |
(2)二元函数
函数名 | 作用 |
---|---|
np.add() | 加 |
np.substract() | 减 |
np.multiply() | 乘 |
np.divide() | 除 |
np.floor_divide() | 整除 |
np.pow() | 方次 |
np.mod() | 取余 |
5. 聚合函数
对整个数组进行统计操作,返回单一结果值
聚合可以指定参数axis=0/1,0为x轴,1为y轴
常用函数
a.max()
a.min()
a.sum()
a.mean() 平均数
a.std() 标准差
标签:函数,Python,numpy,索引,数组,科学,np,数据 来源: https://blog.csdn.net/qq_42722128/article/details/99887323
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。