python编程:数值计算库numpy是做机器学习的必备库

此处已添加圈子卡片,请到今日头条客户端查看)

python编程:数值计算库numpy是做机器学习的必备库

np.arange(15)的作用就是构造出[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]类似于列表或者说是一个行向量,然后使用reshape方法可以对这个进行重构,reshape(3,5)将这15个元素重构成3行5列,输出为一个三行五列的矩阵。

shape属性可以输出当前矩阵的行数和列数

python编程:数值计算库numpy是做机器学习的必备库

ndim属性可以输出当前矩阵的维数

python编程:数值计算库numpy是做机器学习的必备库

dtype属性当前矩阵中元素类型

扫描二维码关注公众号,回复: 6395642 查看本文章

size当前矩阵中元素的个数

创建全是0的矩阵zeros方法:

python编程:数值计算库numpy是做机器学习的必备库

创建一个三行四列的数组,zeros方法传递的参数应该是一个元组,(3,4)表示三行四列

创建全是1的矩阵ones方法:

python编程:数值计算库numpy是做机器学习的必备库

python编程:数值计算库numpy是做机器学习的必备库

创建一个3维的,(2,3,4)表示两个三行四列矩阵,就是三维的

当我们没有指定类型的时候,他默认是float类型,我们可以指定其类型:

python编程:数值计算库numpy是做机器学习的必备库

这样矩阵中的元素就全部都是int类型了,后面全部都没有点了

使用数的序列创建矩阵:

python编程:数值计算库numpy是做机器学习的必备库

np.arange(0,30,50的意思是从0到30,不包含30,每次增加5形成的序列构造成矩阵

random模块

random方法

python编程:数值计算库numpy是做机器学习的必备库

np.random为进入random模块,然后再点上random为调用random函数,该函数会生成从-1到1的随机数,生成2行3列。

linspace方法

python编程:数值计算库numpy是做机器学习的必备库

arr=np.linspace(0,pi,50)该方法为从0到3.14...之间平均取50个数

矩阵的运算

如果两个矩阵的shape是一致的,那么两个矩阵的加减就是对应位置的加减:

如果减1那么对应每个元素都减1

arr1**2表示每个元素都平方

arr1<2表示判断每个元素小于2,小于为true,不小于为false

python编程:数值计算库numpy是做机器学习的必备库

矩阵的乘法

python编程:数值计算库numpy是做机器学习的必备库

矩阵的乘法*表示对应位置的相乘组成一个新的矩阵

arr.dot(arr2)等于np.dot(arr,arr2)就是真实的矩阵相乘,行乘以列

sqrt和exp方法

python编程:数值计算库numpy是做机器学习的必备库

exp(x)为e的x次方,exp(arr)为e的矩阵元素次方

sqrt为开根号,sqrt(arr)为矩阵中的元素开根号


python编程:数值计算库numpy是做机器学习的必备库

floor为向下取整

ravel方法为将一个矩阵展开变成行向量组的形式

reshape为重构,因为重构的时候行若却确定那么列也确定了,reshape(2,-1)就是指定行数为2,那么列数就不用我们自己算出为6,而是自己写上-1,计算机自己会算出来

print(arr.T)这个方法为输出当前矩阵的转秩,行变列,列变行


矩阵的拼接

python编程:数值计算库numpy是做机器学习的必备库

hstack为行拼接,vstack为列拼接


矩阵的切分

python编程:数值计算库numpy是做机器学习的必备库

hsplit为行切分,切分成两部分(其实行切分从真实情况看就是一把刀再竖着砍一刀)

还可以再指定位置切分np.hsplit(arr,(1,2))

python编程:数值计算库numpy是做机器学习的必备库

这个意思是将arr矩阵从1切一下,从2切一下,这样就切成了三部分,三个矩阵

python编程:数值计算库numpy是做机器学习的必备库

vsplit为列切分,实际上看就是从行的角度来切分,切成两部分,那就是平均分


python编程:数值计算库numpy是做机器学习的必备库

这个就没有实现copy,arr和arr1指向同一内存,一个改变全部都变

python编程:数值计算库numpy是做机器学习的必备库

arr.view实现的是浅copy,所谓浅copy是指两个不指向同一位置的内存,但是共用某些数据,比如说arr和arr1就是浅copy,arr和arr1的id不同,可见二者并没有指向同一块内存,但是当arr[1][2]=66的时候,发现arr和arr1的数据都变化了,这就是说明他们共用某些数据

python编程:数值计算库numpy是做机器学习的必备库

copy可以实现arr1和arr完全指向不同的内存,并且没有共享数据


找出一个矩阵中每行或每列的最大值

python编程:数值计算库numpy是做机器学习的必备库

一个矩阵可能有多维,如果arr.shape=(1,2,3),那么arr[0]=1,arr[1]=2,arr[2]=3,所以arr[1]就是4

arr.argmax(axis=0)是从列的角度获取最大值,输出为[2 0 3 1]就表示每列的最大值在第3行,1行,4行,2行,我们可以使用这个作为行索引,他们分别对应第一列,第二列,第三列,第四列,列索引是rang(4),这样正好是第1列,第二列,第三列,第四列,所以写成range(arr.shape[1])用这个来表示0到3,行数固定

也就是说arr[ind,range(4)]表示为:

arr[2][0]

arr[0][1]

arr[3][2]

arr[1][3]

行就是2,0,3,1,列是0,1,2,3分别对应


python编程:数值计算库numpy是做机器学习的必备库

可以看出arr1是由arr组成了一个4行3列的矩阵


矩阵内数据排序

可以将矩阵内的数据按行排序和按列排序:

python编程:数值计算库numpy是做机器学习的必备库

这个程序共有两个排序方式,方式一:按照它封装好的sort方法进行行排序和列排序

方式二:使用argsort方法返回矩阵数据从小到大的索引坐标,该程序结果为[2,0,1,3]然后在使用它作为索引,获取到数据,结果就是从小到大的数据

猜你喜欢

转载自blog.csdn.net/java276582434/article/details/90757815
今日推荐