python中调用NumPy库,运行没有报错,说明安装完成
as np:将import的numpy给出一个别名,即引入模块的别名。这里可以去掉as np,也可将np改成其他的名字
尽管别名可以省略或者更改,但是建议使用上述约定的别名
维度:一组数据的组织形式
一维数据:由对等关系的有序或无序数据构成,一般采用线性方式组织。对应列表、数组、集合等概念
列表和数组:都是表示一组数据的有序结构。列表的数据类型可以不同,数组的数据类型相同
二维数据:由多个一维数据构成,是一维数据的组合形式。表格是电信的二维数据,其中表头可以是二维数据的一部分,也可是之外的部分
多维数据:由一维或二维数据在新维度上扩展而形成的
高维数据:仅利用最基本的二元关系展示数据间的复杂结构。对应键值对,如湖南-长沙、陕西-西安等
1)提供一个强大的N维数组对象ndarray,也叫数组
2)提供一组广播功能的函数,用于数组之间计算
3)整合C/C++/Fortran代码,并且提供整合这些代码的工具
4)提供线性代数、傅里叶变换、随机数生成等功能
用以下例子表明numpy和正常运算的区别:计算A2+B3,A、B是一维数组
- 数组对象可以去掉元素间运算所需的循环,使一维数据更像单个数据
- 设置专门的数组对象,提示运算速度
- 在科学计算中,一个维度所有数据的类型往往相同。所以数组对象采用相同的数据类型,有利于节省运算和存储空间
ndarray由2部分构成:实际的数据、表述这些数据的元数据(数据维度、数据类型等)
ndarray要求所以有元素类型相同(同质),数组下标从0开始
ndarray的2个基本概念:1)轴(axis):保存数据的维度;2)秩(rank):轴的数量,或者维度的数量,即数组有多少个维度
轴和秩是描述ndarray类型的基本向量和方式
尺度,对于矩阵n行m列 |
元素个数,相当于.shape 中n*m的值
|
每个元素大小,以字节为单位 |
8位无符号整数,取值:[0, 225] | |
16位长度的整数,取值:[-3] | 16位半精度浮点数:1位符号位,5位指数,10位尾数 |
32位半精度浮点数:1位符号位,8位指数,23位尾数 | |
64位半精度浮点数:1位符号位,11位指数,52位尾数 | |
复数类型,实部和虚部都是32位浮点数 | 复数类型,实部和虚部都是64位浮点数 |
Python语法仅支持整数、浮点数和复数3种数据类型
- 能够符合在科学计算(数据多)对存储和性能的高要求
- 对元素类型精细定义,有助于NumPy合理使用存储空间并优化性能,且有助于程序员对程序的规模合理评估
ndarray最好是同质的数组类型,但也可以包含非同质的元素(如下代码)
# .shape只看到2个元素,但是没有进一步分析 # 非同质ndarray,将每个元素认为是一个对象类型(dtype('0'))非同质ndarray无法发挥UnmPy的优势,应该尽量避免
- Python中的列表、元组
只要元组和列表包含的数据个数相同,可以将列表和元组回合,一起混合使用,来创建
根据shape生成一个全1数组,shape是元组类型(浮点数类型) |
根据shape生成一个全0数组,shape是元组类型(浮点数类型) |
根据shape生成一个数组,每个元素值都是val |
创建一个正方的n*n单位矩阵,对角线为1,其余为0(浮点数类型) |
根据数组a的形状生成一个全1数组 |
根据数组a的形状生成一个全0数组 |
根据数组a的形状生成一个全val数组 |
根据起止数据等间距地填充数据 |
将2个或多个数组合并成1个新数组 |
不改变数组元素,返回一个shape形状的新数组(保证元素总体个数不发生改变) |
将数组n个维度中的2个维度进行调换 |
对数组进行降维,返回折叠后的一维数组,原数组不变 |
# np.int:程序会将元素解析为整数类型,是int32还是int64,是由程序自动调节
astype()
方法一定会创建一个新的数组,即使定义一个与原数组类型相同的数组,也会有一个新的数组,即可利用这个特性进行拷贝数组
列表时Python中最原始的数据类型,可能在空间和运算速度比NumPy慢很多。但是更适合传统的或者原生的Python语言语法
对数组的索引:获取数组中特定位置元素的过程
对数组的切片:获取数组元素子集的过程
一维数组的索引和切片(与python列表相似)
数组与标量之间的运算:运算作用于数组的每一个元素
NumPy一元函数:对ndarray中的数据执行元素级运算的函数
计算数组x各元素的绝对值 |
计算数组x元各素的平方根、平方 |
计算数组x各元素的自然对数、10底对数、2底对数 |
计算数组x各元素的ceiling值(大于元素的最小整数值)、floor值(小于元素的最大整数值) |
计算数组x各元素的四舍五入 |
将数组x各元素的小数部分和整数部分以2个独立数组返回 |
计算数组x各元素的普通型和双曲线型三角函数 |
计算数组x各元素的指数值 |
计算数组x各元素的符号值,1(+),0,-1(-) |
在使用数组时,一定要注意原数组是否被真实改变,
一元函数几乎都是只改变输出结果,不改变原数组(要改变需要重新赋值)
2个数组各元素进行对应运算 |
元素级的最大值/最小值计算 |
将数组y中个元素值的符号赋值给数组x |
算术比较,产生布尔型数组 |
一种文件格式,用来存储批量数据
将数据写入CSV文件(将数据保存为CSV文件)
frame
:文件、字符串或产生器,可以是.gz或.bz的压缩包
array
:存入文件的数组
fmt
:写入文件的格式,例如%d(整数)、%.2f(保留2个小数点)、%.18e(科学计算法,保留18位小数点的浮点数)
delimiter
:分割字符串,默认是任何空格(写入CSV需呀改成逗号)
unpack
:False读入文件写入一个数组,如果True,读入属性将分别写入不同变量
局限性:只能有效存储一维和二维数组
frame
:文件、字符串
sep
:数据分隔字符串,如果是空串,写入文件为二进制
format
: 写入数据的格式
c # 【一维数组,没有维度信息】
count
:读入元素个数,-1表示读入整个文件
tofile()
写入多维数组,维度信息消失,读取后需要重新定义维度信息
存入是需要知道数组的维度信息和元素类型
# 存入(有原数组的维度信息)
# 读取(有原数组的维度信息)
frame
:文件名,以.npy为扩展名,压缩扩展名为.npz
这个方法是以二进制 存储文件,第一行为数组的原始信息(包括维度)
随机数种子,s是给定的种子值 |
通过重复给定随机数种子,可以生成同一个随机数组
根据数组a的第0轴(最外维度)进行随机排列,改变数组a |
根据数组a的第0轴进行随机排列,产生一个新数组,不改变数组a |
从一维数组a中以概率p抽取元素,形成size形状的新数组,replace表示是否可以重用元素,默认为Ture |
产生浮点数[0,1)的均匀分布的数组,d0-dn是维度信息 |
产生具有均匀分布的数组 |
产生数值是标准正态分布的数组,d0-dn是维度信息 |
产生具有正太分布的数组,loc均值,scale标准差 |
产生具有泊松分布的数组,lam随机事件发生概率 |
NumPy直接提供统计函数,调用方法np.
根据给定轴axis计算数组a相关元素之和 |
根据给定轴axis计算数组a相关元素的期望 |
根据给定轴axis计算数组a相关元素的加权平均值 |
根据给定轴axis计算数组a相关元素的标准差 |
根据给定轴axis计算数组a相关元素的方差 |
# 第一维度上,相对应的元素相加,得到一个第二维度和第三维度的数组 # 本例中,第一维度有2个,第1个第一维度+第2个第一维度 # 第二维度上,相对应的元素相加,得到一个第一维度和第三维度的数组 # 本例中,第二维度有3个,在第1个第一维度中:第1个第二维度+第2个第二维度+第3个第二维度;在第2个第一维度中亦然 # 第三维度上,相对应的元素相加,得到一个第一维度和第二维度的数组 # 轴为1时,是第二维度数据,第二维度有3个,所有需要分别指出其加权力度
axis
= None是统计函数的标配参数,axis
是整数或元组
加权平均数=元素*相应加权之和/权重之和
不设定时,默认哥权重为1,即平均值
计算数组a中元素的最小、大值 |
计算数组a中元素最小、大值的降一维下标(即获得最小、大值的一维位置) |
根据shape将一维下标的index装换成多维下标 |
计算数组a中元素最大值与最小值差 |
计算数组a中元素中位数的运算(中值) |
axis
= 0,黑框,第1个第一维度
axis
= 1,红框,第1个第二维度
axis
= 2,绿框,第4个第三维度
np.gradient(a)
:计算数组a中的梯度,当a为多维数组时,返回每个维度梯度
梯度:连续值之间的变化率,即斜率。反应元素的变化率
在XY坐标抽连续三个X坐标应用的Y轴值:a,b,c,b的梯度是(c-a)/2
对于2个顶点数值,是(当前数值-隔壁数值)/1
RBG色彩模式:通过颜色通道变化和叠加得到各种颜色,形成的颜色包括人类实例所能感知的所有颜色
Image
:是PIL库中代表一个图像的类(对象)
图像的数组表示:由像素组成的三维矩阵,每个元素是一个RGB值
# 将打开的图片生成一个数组# 读入图像,并获得RGB值数组 # 改变数组像素,计算补值 # 将数组生成图像对象维度分别是高度、宽度、像素RGB值构成
convert(L)
将彩色变换成灰色图片,生成的数组时一个二维数组,对应的值是灰度值,不是RGB值
- 相同或相近色彩趋于白色
- 略有光源效果:根据灰度变化模拟人类视觉的远近程度
利用像素之间的梯度值和虚拟深度值对图像进行重构
根据灰度变化来模拟人类视觉的明暗程度