Numpy-- Numeric python :是python 的一种开源数值计算扩展。
1. 一个强大的N维数组;
2.比较成熟的(广播)函数库;
3. 用于整合c/c++ 和 Fortrant代码的工具包;
4.实用 的线性代表,傅里叶变换和随机数生成函数;
5.Numpy 和稀疏矩阵运算scipy 配合使用更加强大;
使用 Numpy.array() 由python list 创建
注意:* numpy默认ndarrey 的所有元素类型是相同的;
* 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float > int
1. 使用np.array(Python list)
n1 = np.array( [1,2,3,4] )
2, 使用 routines 创建
1) np.ones( shape , dtype=None , order = "c")
np.ones((3,4),dtype = str)
array([['1', '1', '1', '1'],
['1', '1', '1', '1'], ['1', '1', '1', '1']], dtype='
2 ) np.zeros(shape , dtypt=None , order = 'c')
同上,只不过所有值为 ‘ 0’
3) np.full(shape,fill_value,dtype= None,order = 'C')
同上,fill_value,为填充值,也就是想要的参数
4 ) np.eye(N,M=None,k=0,dtype=float)
对角线位置为 1 ,其他位置为 0
5) np.linspace(start, stop, num=50,endint=True,retste=False,dtype=None)
线性 均匀划分 num = 划分个np.linspace(1,20,10)数 、
np.linspace(1,20,10)
array([ 1. , 3.11111111, 5.22222222, 7.33333333, 9.44444444, 11.55555556, 13.66666667, 15.77777778,
17.88888889, 20. ])
6)np.arange([start,]stop,[step,]dtype=None)
np.arange(0,50,10)
array([ 0, 10, 20, 30, 40])
7)np.random.randint(0,150,size = 5) 随机生成 5 个数
8)np.random.randn(d0,d1,.....dn)
标准正太分布 d 为个数,一个即可
9)np.random.normal(loc = num,scale = 0,size = 100)
loc 正太分布的锚点, scale 表示波动范围 ,size 表示生成个数
10)np.random.random(size= none)
生成 0 到一 随机数字 ,size 表示生成个数或者维度(3,4,5)
2 ndarray 的基本操作
1).索引
与 python 列表相同,一维 与 多维 同理
2)切片
与 Python 相同 ,切片注意维度,左闭右开
3)变形 reshape
注意: 参数是一个元祖
num.reshape() 如果为负数,转换为 一维数组
4)级联
np.concatenate() 级联需要注意的点:
~级联参数是列表: 一定要加中括号或者小括号
~维度必须相同
~形状相符
~【重点】 级联的方向默认是 shape 这个tuple的第一个值所代表的维度方向
~ 通过 axis 参数 改变级联的方向
vstack 垂直级联 np.vstack
hstack 水平级联 np.hstack 多维数组使用 hstack 会降 一个维度
5) 切分 split : 与分片不同,切片使用 split 函数 ,根据下标起开,显示所有
np.split(ary, indices_or_section,axis=0)
axis = 1 对列进行切分
vsplit 竖直方向切分
hsplit 水平方向切分
6) 副本
jupyter 中 所有的赋值运算不会为ndarray 的任何元素创建副本,
对赋值后的对象的操作,也对原来的对象生效
4 聚合操作
1) 最大 最小值 np.max / np.min
axis 的值为 各个维度的下标,最大值为 len(n.shape - 1)
2) 平均值 np.mean
3) 求和 np.sum
4) 求数组里最小值的下标 np.argmin(array)
5) 求数组里最大值的下标 np.argmax(array)
6) 寻找数组里符合条件的值 np.argwhere( )
7) 将一维数组里面的某几个值转换为需要的的 多维数组
n7 = np.array([31, 50, 50, 46, 94, 18, 53, 2, 10, 94])n8 = n7[np.array[ [0], [1] ]
n8 = np.array([ [31], [50] ])
n8.shape = ( 2, 1 )
五,矩阵 的加减乘除
六 ndarray 的排序