AI常用模块numpy

前言:在linux下安装numpy模块非常简单,执行pip install numpy即可

一.numpy的核心算法

ndarray (多维数组)

用法:

import numpy as np
a = np.ndarray((3,5)) 
print(a)
print(a.shape)  #矩阵的形状 三行五列
print(type(a))   #a的类型

输出的结果为

[[  6.90897762e-310   4.64536969e-310   0.00000000e+000   0.00000000e+000
    0.00000000e+000]
 [  0.00000000e+000   0.00000000e+000   0.00000000e+000   0.00000000e+000
    0.00000000e+000]
 [  0.00000000e+000   0.00000000e+000   0.00000000e+000   0.00000000e+000
    6.32404027e-322]]   # 这些仅代表形状
(3, 5)
'numpy.ndarray'> # 可以理解为矩阵

接下来介绍一些numpy的一些方法:

numpy方法 解释
1.numpy.dtype 指定当前numpy对象的整体数据
2.numpy.ndim 数组轴的个数,在python中轴的个数称为秩
3.numpy.shape 轴,查看数组的形状,对于矩阵n行m列
4.numpy.reshape(n,m) 矩阵转置,改变数组的形状为n行m列
5.numpy.size 数组元素的个数,等于shape属性中元组元素的乘积
6.numpy.itemsize 对象中每个元素的大小, 单位字节
7.numpy.ndarray((n,m)) 创建一个n行m列的矩阵但没有实际数据
8.numpy.array(((2,3,4),(1,2,3))) 创建一个两行三列的数组
9.numpy.arange(x,y,z) 和python中range的用法一样,x起始,y截止,z步长
10.numpy.arange(24).reshape((2,3,4)) 创建一个2维3行4列的数据可以索引和切片
11.numpy.linspace(x,y,z) 等间距生成,x起始,y截止,z个数
12.numpy.ones(n,m) 生成n行m列内容都是1的数组,可传递多维数组
13.numpy.zeros(n,m) 生成n行m列内容都是0的数组,可传递多维数组
14.x.astype(numpy.bool) 转换x数组的数据类型
15.numpy.mat() 将python列表转化为矩阵matrix对像
16.numpy.matrix() 将python列表转化为矩阵matrix对像(同上)
17.numpy.mat().getA() 将matrix对象转成ndarray对象
18.x.tolist() 转换成python列表, 用于和python原生结合写程序
19.numpy.tile() 重复某个数组。比如tile(A,n),功能是将数组A重复n次,构成一个新的数组
20.x.T 矩阵转置, 行变列, 列变行, 对角线翻转矩阵
21.numpy.multiply(x, y) 矩阵x 矩阵y相乘(保证矩阵的行列相等,数值相等)
22.numpy.unique() 数组去重, 并且从小到大生成一个新的数组
23.numpy.full([n,x, y], z) 自定义模板数组, 生成n维度x行y列都是z的数组
24.numpy.eye(x) 创建一个正方的x*x单位的矩阵, 对角线为1, 其余为0
25.numpy.flatten() 数组降维, 不改变 原值
26.numpy.random.rand(x, y, z)/numpy.random.random((x, y, z)) 随机生成一个x维y行z列的数组
27.numpy.random.randn(x, y) 正态分布随机数
28.numpy.random.randint(x,y,(z)) 整数在x和y(不包括z)之间随机z个数
29.x.sum(axis=None) 求和, axis=0为列, 1为行.默认全部
30.numpy.argsort() 矩阵每个元素坐标排序
31.numpy.sort() 从小打大排序 有个参数axis默认值为1
32.numpy.mean(x,axis=None) 求数组x的平均值
33.numpy.average(x,axis=None,weights=None) 加权平均,weights加权值,不设为等权重
34.numpy.var(x,axis=None) 方差:各数与平均数之差的平方的平均数
35.numpy.argmin(x,axis=None) 求数组中最小值的坐标
36.numpy.median(x,axis=None) 中位数
37.numpy.ptp(x,axis=None) 元素最大值与最小值的差
38.numpy.cumsum() 累加,cumsum和cumprod之类的方法不聚合,产生一个中间结果组成的数组,默认一维数组,1为按原样
39.numpy.cumprod() 累乘
40.numpy.count_nonzero(arr > 0) 计数非0值个数,布尔值会被强制转换为1和0,可以使用sum()对布尔型数组中的True值计数
41.(a,numpy.bool()) 测试数组中是否存在一个或多个True

numpy类型

bool 布尔值
int 整型
float 浮点型
complex 复数
object 对象
string_ ASCII字符
unicode_ Unicode所有字符, 字节数平台决定

此外numpy还有一个最常用的方法

矩阵的乘法运算dot
例如出现这样一个情况:一个节目表演的,a去参加.表演完之后由5名观众和3名评委投票来决定是否通过.当然评委的权重值要比观众投票的权重值大.
观众和评委的投票结果如下(通过票就表示为1,不通过就用-1表示):
观众:a[-1,-1,1,-1,-1] b[-1,-1,1,1,-1]观众的权重值:0.2
评委:[1,-1,1] b[,1,1,-1] 评委的权重值为0.5
那么代码我们就可以这样写:

import numpy as np
grade = np.array(([-1,-1,1,-1,-1,1,-1,1],[-1,-1,1,1,-1,1,1,-1])) #把投票结果卸载一个数组里面
wv = np.array(((0.2),(0.2),(0.2),(0.2),(0.2),(0.5),(0.5),(0.5))) #对应的权重值
print('权重:',wv)
print('转化数组形状:',grade.T)  #运用dot,必须是一个n行m列的数组乘以m行x列的数组生成一个n行x列的数组,所以在这里要用.T转换形状
print('评分结果:'np.dot(wv,grade.T))  # dot把评分和对应的权重值相乘,然后结果相加

输出为:

权重: [ 0.2  0.2  0.2  0.2  0.2  0.5  0.5  0.5]
转化数组形状:
 [[-1 -1]
 [-1 -1]
 [ 1  1]
 [-1  1]
 [-1 -1]
 [ 1  1]
 [-1  1]
 [ 1 -1]]
评分结果: [-0.1  0.3]

显示结果a的最终评分-0.1<1+-1 所以不通过
b的最终评分-0.3>1+-1 所以通过

你可能感兴趣的:(知识点)