1.numpy数据存储与列表的区别
2.numpy数组的创建
- 直接创建
np.zeros((3,3),dtype=int)
np.ones((3,3),dtype=int)
np.eye() np.identity()
np.empty((3,3))创建一个由3个整型数组成的未初始化的数组,数值随机
np.full((2,3),3.14)创建一个都是3.14的多维数组
np.arange(m,n,d)创建一个含有五个元素的数组,均匀分布在m,n之间
np.random.random(0,1,(3,3))均匀分布
np.random.normal(0,1,(3,3))正态分布
np.random.randint(0,10,(3,3))
n.asarray()会发生拷贝
-
dtype转换
np.astype()
相当于直接修改dtype -
形状变化
np.reshape()
相当于直接修改shape -
列表创建
np.array([1, 2, 3, 4], dtype='float32')
np.array([range(i,i+3) for i in [1,2,3]])
不同于 Python 列表,NumPy 要求数组必须包含同一类型的数据。如果类型不匹配,NumPy 将会向上转换(如果可行)。
3.numpy数组的属性
- shape
- nidm维度,多少个轴
- size数组总大小
- dtype数据类型
- itemsize每个元素字节大小
- strides每轴加一时地址差
4.数组的索引
一维索引
二维索引
正向索引
负向索引
切片索引(正向负向)
多维切片索引(正向负向)
获取数组的行和列
5.切片与副本
数组切片返回的数组的视图,而不是数组的副本,改变数组的视图,原数组被改变。而array.copy()创建数组的副本则不会改变。
6.数组变形
reshape()
如何将一个一维数组转换成二维的行或者列
x[np.newaxis,:]二维行向量
x[:,np.newaxis]二维列向量
7.数组的拼接与分割
np.concatenate()可以指定拼接维数
np.vstack()垂直拼
np.hstack()水平栈
np.split()
np.vsplit()
np.hsplit()
通用函数
1.通用函数的优点?
将循环操作改成向量操作,快。
2.数组的算术运算符
加减乘除/整除//取余%,*表示指数运算
绝对值np.abs()
三角函数
指数np.exp(),np.exp2(),np.power(3,X)
对数np.log()
3.聚合函数
通常返回整个数组的一个结果值,通过纬度参数axis可以指定按照哪个纬度聚集
sum,max,min,prod,mean,std,var,median,percentile,any,all,argmin,argmax
广播
1.什么是广播?
广播是用于不同大小两个数组的操作规则,是为了简化和加快计算。
2.广播的规则?
1.如果两个数组的纬度不匹配,那么小纬度数组的形状将在左边补1。
2.如果两个数组的形状在任何一个纬度上都匹配不上,那么数组的形状会沿着纬度为1的纬度扩展以匹配另一个数组的形状。
3.如果两个数组的形状在任何一个纬度都不匹配,并且也没有等于1的纬度,那么会引发异常。
比较掩码和布尔逻辑
将布尔数组作为掩码
x[x<5]
花哨的索引
1什么是花哨索引?
它意味着传递一个索引数组来一次性得到多个数组元素
数组的排序
np中的快排
np.sort()返回排好序的数组
np.argsort()返回原始数组排好序的索引
沿着行排序np.sort(,axis=0)
沿着列排序np.sort(,axia=1)
部分排序np.partition()只对数组的前k个排序,其余留在原来的位
网友评论