numpy中有关机器学习的一些知识点笔记2

这是第二部分关于Numpy的一些基本操作
1.将arange中的向量形式转成矩阵形式:reshape
2.创造一个初始化空矩阵:np.zeros
3.产生随机数列,利用random和linespace
4.数组array进行计算以及科学计算
5.进行矩阵计算操作,矩阵转化为向量:ravel
6.对矩阵数组进行拼接和切分:hatack:横向拼接,vstack:纵向拼接
7.关于数组或者矩阵复制的三种方法
法1:让另一个变量与其相等(a=b):二者内元素相同且id相同
法2:利用view进行潜复制:二者内元素相同且id不同
法3:利用copy函数:二者内元素不同且id不同
8.对一些特征值(最大值,最小值等)的提取
9.对数组进行扩展:np.tile
10.对数组进行排序:np.sort(元素大小),np.argsort(索引值)

#1.将arange中的向量形式转成矩阵形式并进行一些属性的打印
print(np.arange(15))
a=np.arange(15).reshape(3,5)
print(a)
print(a.shape)#形式:3行5列
print(a.ndim)#维数:2维
print(a.dtype.name)#数组里面值的类型:int32
print(a.size)#数组里有多少个元素:15

#2创造一个初始化空矩阵
b=np.zeros((3,4))#3行4列
print(b)
c=np.ones((2,3,4),dtype=np.int32)#2个3行4列矩阵,类型为int32
print(c)

#3产生随机数列,利用random和linespace
d=np.random.random ((2,3))
print(d)
#产生平均随机数列
from numpy import pi
f=np.linspace(0,2*pi,100)
print(f) #产生从0到2pi的100个随机点数

#4数组array进行计算以及科学计算
e=np.array([20,30,50,30])
g=np.arange(4)
print(e)
print(g)
h=e-g#对应位置进行相减
print(h)
h=h-5
g**2#数组平方
print(g**2)
print(e<10)#判断是否小于10
k=np.arange(3)
print(np.exp(k))#取e的次幂
print(np.sqrt(k))#开根号

#5进行矩阵计算操作
l=np.floor(10*np.random .random ((3,4))) #产生3行4列的随机数,并且乘以10,并向下取整
print(l)
print('-------------')
print(l.ravel())#将矩阵转化为向量,ravel,将向量转矩阵是:reshape。
print('-------------')
l.shape=(6,2)#指定6行2列
print(l)
print('-------------')
print(l.T) #求转置矩阵
print('-------------')
print(l.reshape((3,-1)))
#如果一个矩阵的元素确定后,那么指定一个维数,另一个维数也是确定的。因此a.reshape(3,-1)也是确定的

#6对矩阵数组进行拼接和切分:hatack:横向拼接,vstack:纵向拼接
m=np.floor(10*np.random .random ((4,4)))
n=np.floor(10*np.random .random ((4,4)))
print(m)
print(n)
print(np.hstack((m,n)))#对矩阵按照行进行纵向拼接:hstack
print(np.vstack((m,n)))#对矩阵按照列进行横向拼接:vstack
print(np.hsplit(m,2))#按照行进行纵向切分:hsplit
print('-------------')
print(np.hsplit(m,(1,2)))#对指定位置进行按照行进行纵向切分:hsplit

#7关于数组或者矩阵复制的三种方法
#法1:让另一个变量与其相等:二者内元素相同且id相同
o=np.arange(12)
p=o
#o和p只是两个名字不同但是内容相同的数组
print(o is p)#True
p.shape =(2,6)
print(p.shape )
print(id(o))#对象的标识,这是唯一的,ID:157278496
print(id(p))#ID:157278496
print(help(id))
#法2:利用view进行潜复制:二者内元素相同且id不同
r=o.view()
print(r is o)#False
#虽然发生了复制但是o和r却是不同的数组
r.shape =(2,6)
print(p.shape )
r[0,4]=1234
print(o)#元素值是共用的,但是id是不一样的
print(id(o))#对象的标识,这是唯一的,ID:157278496
print(id(r))#二者的id也是不同的,ID:157363216
#法3:利用copy函数:二者内元素不同且id不同
s=o.copy()
print(s is o)
s[0,0]=55
print(s)
print(o) #二者的元素值也是不共用的,并且id也是不同的

#8.对一些特征值(最大值,最小值等)的提取
data=np.sin(np.arange(20)).reshape(5,4)
print(data)
ind=data.argmax(axis=0)#按列进行索引,查找最大值,得到列中的行数
print(ind)
data_max=data[ind,range(data.shape[1])]#通过找到其列的位置,组合从而获得最大值
print(data_max)

#9.对数组进行扩展
t=np.arange(0,40,10)#从0到40,每10个加1个
print(t)
v=np.tile(t,(3,5))#进行扩展
print(v)

#10.对数组进行排序
w=np.array([[4,3,5],[1,2,1]])
print(w)
print('-------------')
x=np.sort(w,axis=1)#对数组进行按列从小到大的排序
print(x)
y=np.array([4,3,1,2])
z=np.argsort(y)#求的是从小到大的索引值
print('-------------')
print(z)
print('-------------')
print(y[z])#从索引值中获取到最大值

本文以唐宇迪老师机器学习讲解为基础进行编写,仅供学习和参考。

猜你喜欢

转载自blog.csdn.net/weixin_42836427/article/details/81380864
今日推荐