机器学习11-numpy

1.NumPy是Python科学计算的核心库,它提供了一个高性能的多维数组对象,以及用于处理这些矩阵的处理工具;提供了方便和快速的N维数组的记录和计算方法,很多函数库都会用到,如SciPy、Tensorflow等。

import numpy as np 
a=np.array([1,2,3])
print(type(a))
print(a.shape)
print(a[0],a[1],a[2])
a[0]=5
b=np.array([[1,2,3],[4,5,6]])
print(b.shape)
print(b[0,0],b[0,1],b[1,0])

        为了方便预定义大量的数组,NumPy还提供了许多函数来创建矩阵,比如zeros默认数组为0,ones默认数组为1,full默认数组为自定义数。

import numpy as np 
a=np.zeros((2,2))
print(a)
b=np.ones((1,2))
print(b)
c=np.full((2,2),7)
print(c)
d=np.eye(3)
print(d)
e=np.random.random((2,2))
print(e)

        多维数组的切割在科学和统计上的计算是非常重要的,在这个程序中,将通过[数组行头,尾:数组列,尾]方式,把多维数组给切片(slicing)出来。

import numpy as np
a=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
row_r1=a[1,:]
row_r2=a[1:2,:]
print(row_r1,row_r1.shape)
print(row_r2,row_r1.shape)
col_r1=a[:,1]
col_r2=a[:,1:2]
print(col_r1,col_r1.shape)
print(col_r2,col_r2.shape)

        在NumPy预定数组的数据类型时,NumPy会根据数组数据,自动挑选合适的数据类型,也可以通过dtype来指定特定的数据类型。

import numpy as np
x=np.array([1,2])
print(x.dtype)
x=np.array([1.0,2.0])
print(x.dtype)
x=np.array([1,2],dtype=np.int64)
print(x.dtype)

        通过NumPy可以很轻松地做到数组的计算,如线性代数中的加、减、乘、除、平方等运算,甚至较复杂的矩阵相乘,也可以通过dot()函数来完成。

import numpy as np
x=np.array([[1,2],[3,4]],dtype=np.float64)
y=np.array([[5,6],[7,8]],dtype=np.float64)
print(x+y)
print(np.add(x,y))
print(x+10)
print(x-y)
print(x-[1,2])
print(x*y)
print(np.multiply(x,y))
print(x/y)
print(np.divide(x,y))
print(x**2)
print(np.sqrt(x))
print(x.dot(y))
print(np.dot(x,y))

NumPy提供的与统计有关的计算函数如下:

· sum,总和;

· max,最大;

· min,最小;

· cumsum,累加;

· mean,平均值;

· average,加权平均值;

· median,中间值;

· std,标准偏差;

· var,方差。

import numpy as np
x=np.array([[-1,2,3],[13,14,15]])
print(x)
print(np.sum(x))
print(np.sum(x,axis=0))
print(np.sum(x,axis=1))
print(np.max(x))
print(np.min(x))
print(np.average(x))
print(np.mean(x))
print(np.median(x))
print(np.std(x))
print(np.var(x))
print(x.T)

逻辑判断

import numpy as np
a=np.array([[-1,2,3],[13,14,15]])
bool_idx=((a%2)==0)
print(bool_idx)
print(a[bool_idx])
print(a[a>10])
print(a[a%2==1]*10)

不同尺寸的矩阵相加

在实际的NumPy下做矩阵数据的加、减、乘、除时,会遇到矩阵尺寸不一样的情况,那该怎么处理呢?本节实例提供了三种方法,将不同尺寸的矩阵相加。以运行结果来看,这三种方法求出来的结果一模一样。

方法一:一条一条地通过循环的方法处理。

方法二:使用tile()将小的矩阵依照比例放大。

方法三:交给NumPy自动处理。

import numpy as np
x=np.array([[1,2,3],[4,5,6]])
v=np.array([1,0,1])
y=np.empty_like(x)
for i in range(2):
    y[i,:]=x[i,:]+v
print(y)
v2=np.tile(v,(2,1))
print(v2)
print(x+v2)
print(x+v)

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值