Numpy 和 pandas的运行速度会比字典、列表运行更快。
numpy的简单运用
Numpy的基本语句:定义一个矩阵
import numpy as np
array=np.array([[1,2,3],[2,3,4],[4,5,6],[6,7,8]])
print(array)
print(array.ndim)
print(array.size)
print(array.shape)
注意括号的形式
运行结果:
利用numpy生成矩阵和数字
a=np.array([[1,2,3],[2,3,4],[4,5,6],],dtype=np.int64)#生成一个矩阵,数据类型是整型
b=np.zeros((3,4),dtype=np.int64)#生成一个0矩阵,形状是3*4
c=b=np.ones((3,4),dtype=np.int64)#生成一个1矩阵,形状是3*4
d=np.arange(12).reshape((3,4))#生成一个从0到11的矩阵,形状是3*4,注意后面是两层括号
e=np.linspace(0,30,10).reshape((2,5))#生成一个线段,从0到30,分为10段,形状2*5
数组运算
a=np.array([10,20,30,40])
b=np.arange(4)
c=a-b#对应相减
d=b**2#对应平方
e=np.sin(a)#对应求正玄
f=b<3#对应判断是否大于3
矩阵乘法
numpy中矩阵的相乘总共有两种方式,各个元素对应相乘,以及数学上矩阵的乘法。
a=np.array([[10,20],[30,40]])
b=np.arange(4).reshape(2,2)
c=a*b #对应数字相乘
d=np.dot(a,b)#数学上的两个矩阵相乘
e=a.dot(b)#等同于上面的表达式
矩阵求和以及最大最小值
a=np.random.random((2,4))#生成2*4的随机阵
b=np.sum(a)#整个矩阵求和
b2=np.sum(a,axis=1)#axis=表示纵向求和,axis=1表示横向求和,不打axis表示整个矩阵求和,同理应用于max,min等函数
c=np.max(a)
d=np.min(a)
矩阵的条件索引及内部运算
a=np.random.random((3,4))#产生一个3行4列的随机阵
print(a)
print(np.argmax(a))#索引最大值所在的位置,返回一个数字,为最大值从左到右从上到下的排序,下列同理
print(a.argmax())#部分函数也可以用这样的表达形式,注意a需要是numpy的变量
print(np.argmin(a))
print(np.average(a))#平均
print(np.median(a))#中位数
print(np.cumsum(a))#累加,输出一个数组
print(np.diff(a))#累差,每一行中,后一个减前一个的数,输出一个3*3的矩阵
print(np.nonzero(a))#返回两个数组,分别代表非零元素的行向量和列向量
print(np.sort(a))#对矩阵进行排序,排序规则是对矩阵的每一行进行排序,从左到右递增
print(np.transpose(a))#对矩阵进行转置
print(a.T)#等同于矩阵转置
print(np.clip(a,0.3,0.6))#clip函数,小于0.3的数字全部变为0.3,大于0.6的数字全部变为0.6
矩阵的精确索引
a=np.arange(3,15).reshape((3,4))
print(a)
print(a[1])#输出第二行的数组
print(a[1][1])#输出第二行第二列的数组
print(a[1,1])#等同于print(a[1][1])
print(a[1,2:])#打印第二行,第三列及以后的数值,类似于列表的索引方式
矩阵的行、列及元素遍历
#numpy支持自动的按行索引
for row in a:
print(row)
#numpy并不支持按列索引,想要打印列的值的话,
for row in a.T:
print(row)
#如果想要打印矩阵中的所有元素
for item in a.flat:
print(item)
矩阵的合并
a=np.array([1,1,1])
b=np.array([2,2,2])
print(np.vstack((a,b)))#垂直合并
print(np.hstack((a,b)))#水平合并
print([:,np.newaxis])#水平数组变单列纵向矩阵
c=np.concatenate((a,b,a,b),axis=0)# 多个数组合并,可以通过axis调整合并的维度
矩阵的分割
a=np.arange(12).reshape((3,4))
b=np.split(a,2,axis=1)#将矩阵从纵向等量分割为两部分,必须是相等分割,比如如果分为三块就会报错
c=np.array_split(a,3,axis=1)#将矩阵纵向分割为2,1,1的形式
d=np.hsplit(a,4)#纵向分割
e=np.split(a,3)#横向分割
矩阵的拷贝赋值
如果用等号进行赋值,两个矩阵将指向同一对象,可能在实际应用中带来不便,所以需要的时候可以调用copy函数