一、NumPy介绍
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy是一个开源的Python科学数据库,用于快速处理任意维度的数据。NumPy支持常见的数组和矩阵操作,使用NumPy比直接使用Python计算要简洁、快速很多。
NumPy是使用一个ndarray(N维数组)对象处理多维数组,该对象是一个快速灵活运算的大户数据容器。
二、效率问题
ndarray与python列表内存的区别:
ndarray中所有的元素类型相同,存储数据的地址是连续的,使得操作数组元素时速度快。
python列表中元素类型是任意的,不确定的,是采用分离式技术实现的动态顺序表,每个元素需要通过寻址方式找下一个元素。
三、ndarray(N维数组)介绍
ndarray属性
属性名字 | 属性解释 |
ndarray.shape | 数组维度的元组 |
ndarray.ndim | 数组维数 |
ndarray.size | 数组中的元素数量 |
ndarray.itemsize | 一个数组元素所占内存大小(字节) |
ndarray.dtype | 数组元素类型 |
四、生成数组方式
4.1生成0和1数组
np.ones
np.ones_like
np.zeros
np.zeros_like
4.2从现有数组生成
np.array
np.asarray(如果参数是使用ndarray数组,则类似浅拷贝,修改源ndarray内容,np.asarray生成的素组也会变化)
import numpy as np a = np.array([1, 2, 3]) a1 = np.asarray(a) a2 = np.array(a) print("------------修改前---------") print(a1) print(a2) print("------------修改后---------") a[0] = 1000 print(a1) print(a2)
------------修改前---------
[1 2 3]
[1 2 3]
------------修改后---------
[1000 2 3]
[1 2 3]
4.3生成固定范围的数组
np.linspace(start, stop, num, endpoint)
start:序列起始值
stop:序列终止值
num:要生成的等间隔样例数量
endpoint:序列中是否包含stop值,,默认为True
np.arange(start, stop, step, dtype)
start:序列起始值
stop:序列终止值
step:每次间隔多少生成数组元素
dtype:数组元素类型
4.4生成随机数组
np.random模块
均匀分布
np.random.rand
返回(0, 1)内的一组均匀分布的数
np.random.uniform(low, high, size)
从一个均匀分布(low, high]中随机采样
size为数组样本数目,为int或元组(tuple)类型
正态分布
np.random.randn
从标准正态分布中返回一个或多个样本值
np.random.normal(loc, scale, size)
loc:均值
scale:标准差
size:输出形状
np.random.stand_normal
返回指定形状的标准正态分布的数组
数组形状修改:
ndarray.reshape
不改变数组元素,返回一个shape形状的数组,原数组不变
ndarray.resize
与.reshape()功能一致,但修改原数组
ndarray.T
求数组的转置
ndarray.astype
类型修改
np.unique
数组的去重
五、ndarray的运算
通用判断函数
np.all()----满足所有
np.any()---满足任一
np.where---三元运算符,
np.where(a >0, 1, 0)
np.logical_and---逻辑与
np.logical_or---逻辑或