主次主要讲的是numpy的经常使用函数,就对于我而言numpy的主要做用是建立数组和随机数和一些数学运算,处理数据由pandas去完成,画图也有其余包好比matplotlib,seaborn 首先来讲的是数组的建立,废话很少说看代码而后再来解释 一 array的建立python
ar_1=np.array([1,2,3,4,5])
ar_2=np.array([[1],[2],[3]])
复制代码
二 array函数的基本用法数组
print(ar_2.ndim)#输出数组秩的个数,结果为2
print(ar_2.shape)#能够理解为输出数组的形状,ar_2输出结果为(3,1)
print(ar_2.size)#输出数组元素的总数,ar_2的输出结果为3,(3*1=3)
print(ar_2.dtype)#输出数组的数据类型,(注意,type()是函数,而dtype是numpy的一个方法)
复制代码
三 array的不规则建立bash
ar3 = np.array([[1,2,3],('a','b','c')]) # 二维数组:嵌套序列(列表,元祖都可)
ar4 = np.array([[1,2,3],('a','b','c','d')]) # 注意嵌套序列数量不一会怎么样
复制代码
四 利用arange()函数建立数组dom
print(np.arange(10)) # 返回0-9,整型
print(np.arange(10.0)) # 返回0.0-9.0,浮点型
print(np.arange(5,12)) # 返回5-11
print(np.arange(5.0,12,2)) # 返回5.0-12.0,步长为2
复制代码
函数linspace,zeros,ones,eyes函数
#np.linspace在2-3之间等距离去10个数
ar0 = np.linspace(2.0, 3.0,10)
print(ar0)
#np.zeros()生成所有为0的矩阵
ar1 = np.zeros(5)
ar2 = np.zeros((2,2), dtype = np.int)
print(ar1,ar1.dtype)
print(ar2,ar2.dtype)
print('------')
#zeros_like()根据其余数组的维度来建立0矩阵
ar3 = np.array([list(range(5)),list(range(5,10))])
ar4 = np.zeros_like(ar3)
print(ar4)
#np.ones跟zeros相似就不讲了
ar5 = np.ones((3,3))#注意有两个括号
ar7 = np.ones_like(ar3)
print(ar5)
print(ar7)
#建立对角矩阵
复制代码
# 矩阵形状的改变与转置:.T/.reshape()/.resize()工具
# 数组形状:.T/.reshape()/.resize()
ar2 = np.ones((5,2))
print(ar2,'\n',ar2.T)
# .T方法:转置,例如原shape为(3,4)/(2,3,4),转置结果为(4,3)/(4,3,2) → 因此一维数组转置后结果不变
ar4 = np.zeros((4,6)).reshape(3,8) # 用法2:生成数组后直接改变形状
ar5 = np.reshape(np.arange(12),(3,4)) # 用法3:参数内添加数组,目标形状
#reshape改变数组的形状,可是要注意的是使用reshape矩阵的元素个数得相同
ar6 = np.resize(np.arange(5),(3,4))
print(ar6)
# numpy.resize(a, new_shape):返回具备指定形状的新数组,若有必要可重复填充所需数量的元素。
# 注意了:.T/.reshape()/.resize()都是生成新的数组!!!
复制代码
数组的拷贝(深复制和浅复制)ui
# 数组的深复制
ar1 = np.arange(10)
ar2 = ar1
print(ar2 is ar1)
ar1[2] = 9
print(ar1,ar2)
# 回忆python的赋值逻辑:指向内存中生成的一个值 → 这里ar1和ar2指向同一个值,因此ar1改变,ar2一块儿改变
# 数组的浅复制
ar3 = ar1.copy()
print(ar3 is ar1)
ar1[0] = 9
print(ar1,ar3)
# copy方法生成数组及其数据的完整拷贝
复制代码
数组的简单运算spa
#astype()
ar=np.arange(10)
ar.astype(np.float)
#转换数组的数据类型
#数组要是整型或者浮点型,当数组进行运算时,全部的数字都会改变
print(ar+2)#结果为[2,3,4,5,6,7,8,9,10,11]
print(ar-2)
print(ar*2)
print(ar/2)
print(ar**2)
print(ar.mean()) # 求平均值
print(ar.max()) # 求最大值
print(ar.min()) # 求最小值
print(ar.std()) # 求标准差std
print(ar.var()) # 求方差var
print(ar.sum(), np.sum(ar,axis = 0)) # 求和,np.sum() → axis为0,按列求和;axis为1,按行求和
print(np.sort(np.array([1,4,3,2,5,6]))) # 排序
复制代码
切片的内容跟字符串切片的相似我就不讲了3d
数组的堆叠与拆分code
水平堆叠
a = np.array([[1],[2],[3]]) # a为二维数组,3行1列
b = np.array([['a'],['b'],['c']]) # b为二维数组,3行1列
ar2 = np.hstack((a,b)) # 注意:((a,b)),这里形状必须同样
#注意水平堆叠时,两个数组的秩必须相同。可是觉得数组是例外,不同也能够
复制代码
垂直堆叠
a=np.arange(2,5)
b=np.arange(5,8)
ar1=np.vstack((a,b))
#两个数组的秩必须相同,长度能够不一样
复制代码
总结:在进行堆叠时,必须保证两个数组的维度相同,水平堆叠时数组的形状必须相同,竖直堆叠时,西航渡能够不同
拆分
s=np.arange(16).reshape(4,4)
ar1=np.hspilt(s,4)
#水平拆分,注意拆分后为list,也就是说numpy的函数,shape,等方法不可用
竖直拆分
ar2=np.vsplit(s,4)
#拆分后同样为list
复制代码
随机数的生成
随机数的生成是进行数据分析的重要辅助工具,须要重点掌握
一:符合正太分布的随机数
ran=np.random.normal((4,4))
# 生成一个标准正太分布的4*4样本值
# randn
sample1=np.random.rand(10)
sample2=np.random.randn(10,4)
#生成一个符合正太分布的样本,参数里面的数字是数组的形状
复制代码
二 符合均匀分布的随机数
#rand函数
a=np.random.rand()
b=np.random.rand(4)
c=np.random.rand(2,3)
#生成一个符合正太分布的样本,参数里面的数字是数组的形状
#randint函数
flag=np.random.randint(low=4,high=10,size=10)
#生成10个4-9之间的随机数,符合均匀分布,而且随机数只能整型
#记住low的值不能大于high,
t=np.random.randint(3)
#生成一个0-2之间的随机数
复制代码
大概numpy比较经常使用的函数就在这里啦,但愿能帮到大家呀
要想本身熟悉使用必定要本身动手去作,可能别人写代码永远都是别人的