2.机器学习常用库基础--numpy

一.用法及示例:
numpy.array–>创建一个向量或者矩阵
np.shape()–>获得当前矩阵维度
np.argmax()–获得当前最大值所在索引
np.max()–>最大值
np.min()–>最小值
np.mean()–>平均值
np.dtype()–>返回数组中的数据类型
np.size()–>返回数组中元素个数
b[1, 1]–>矩阵按照行和列获取元素
示例:

a = [1, 2, 4, 3]#向量
b = np.array(a)#将原向量转换为数组

对数组中指定行或列求和:np.sum()

matrix = np.array([
    [5, 10, 15],
    [20, 25, 30],
    [35, 40, 45]
])
matrix.sum(axis = 1)#-->按照指定维度axis = 1按照行计算,axis = 0代表按照列计算

矩阵进行切片[:,:]

vector = [1, 2, 4, 3]
print(vector[0:3])
matrix = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
print(matrix[:,0:2])#取出所有行的前两列

对数组元素类型进行转换–>np.astype()

vector = np.array([5, 10, 15, 20])
vector = vector.astype(float)
print(vector)

常用函数
(1)reshape函数–变换矩阵维度

zero_fifteen = np.arange(15)#默认生成顺序自然数列
a = zero_fifteen.reshape(3, 5)
print(a, '\n', a.shape)

(2)初始化矩阵为全0或者1

zeros = np.zeros((3, 4))#将一个三行四列的矩阵初始化为全0矩阵
ones = np.ones((2, 3))#两行三列矩阵初始化为全1矩阵
print(zeros, '\n', ones)

(3)构造序列

gouzao = np.arange(10, 30, 2)
print(gouzao)

(4)random模块–random和randint函数

random_zo = np.random.random((2, 3))
randint_zo = np.random.randint(0, 3, size = (2, 3))
print(randint_zo, random_zo)

(5)linspace模块–>起始值和终止值之间等分为x份

from numpy import pi
np_linspace = np.linspace(0, 2*pi, 100)
print(np_linspace)

(6)矩阵乘法

A = np.array([[1, 1], [0, 1]])
B = np.array([[2, 0], [3, 4]])
print(A * B)#执行标量乘法
print(np.dot(A, B))#执行矩阵乘法

(7)以e为底数的运算和开根运算

C = np.arange(3)
print(np.exp(C))#e的B次方
print(np.sqrt(C))

(8)floor–向下取整

D = np.floor(10 * np.random.random((3, 4)))#random只能生成0-1范围内的随机数
print(D)
print(D.T)#打印D的转置矩阵

(9)拼接数据–hstack和vstack

a = np.floor(10 * np.random.random(2, 2))
b = np.floor(10 * np.random.random(2, 2))
print(np.hstack(a, b))#横向拼接
print(np.vstack(a, b))#纵向拼接

(10)矩阵切分–hsplit和vsplit

a = np.floor(10 * np.random.random((3, 9)))
b = np.hsplit(a, 3)#按列分为3部分
c = np.vsplit(a, 3)#按行分为3部分
print(b, c)

(11)矩阵数值排序–sort根据矩阵数值排序和argsort根据索引值进行排序

c = np.array([[4, 3, 5], [1, 2, 1]])
d = np.sort(c, axis = 1)#axis=1代表按行从小到大排序
c = c[0,:]
e = np.argsort(c)#argsort方法得到元素从小到大的索引值
print(e)
print(c[e])

一.特定数组创建的方法:

方法名写法或者示例
zeros()np.zeros(3)创建一个3元素的一维全0数组
ones()np.ones(5)创建一个5元素的一维全1数组
arange()np.arange(start, end, step)创建等间隔数组
linspace()np.linspace(start, end, parts)将end-start划分为parts份
random()np.random(3)默认在0-1内选择随机数创建3元素一维数组

二.基本运算

方法名算例或者用法
标量相乘a * b同型数组进行相乘
矩阵积a.dot(b)或者dot(a, b)或者np.dot(a, b)进行矩阵数乘
数组的平均值a.mean()
数组标准差a.std()

三.数组的遍历:

方法名算例及用法
apply_along_axisapply_along_axis(聚合函数, 对哪条轴进行迭代操作,数组名)

例子:

A = np.arange(10, 19, 1).reshape(3, 3)
A_0 = np.apply_along_axis(np.mean, axis = 0, arr = A)#对每一列求均值
A_1 = np.apply_along_axis(np.mean, axis = 1, arr = A)#对每一行求均值
>>>print(A_0, '\n',A_1)
[13. 14. 15.] 
 [11. 14. 17.]

四.数组形状变换:

方法名算例或者用法
reshape()reshape(3,3)将原数组变为3*3的二维数组,而原数组形状不变
shapea.shape = (3, 4)将原数组变为3*4的二维数组,原数组随之发生改变
ravel()a.ravel()将原数组变为一维数组,原数组形状不变
transpose()a.transpose()实现a数组的矩阵转置效果

五.数组的操作:

方法名用法
连接数组
vstack()np.vstack((a, b))a与b按行进行连接
hstack()np.hstack((a, b))a与b按照列进行连接
column_stacknp.column_stack((a, b, c))把一维数组作为列压入栈结构
row_stacknp.row_stack((a, b, c))把一维数组作为行压入栈结构
数组切分
vsplit()[A, B] = np.hsplit(C, 2)把C垂直切分为两个数组
hsplit()[A, B] = np.hsplit(C, 2)把C水平切分为两个数组
split()[A1, A2, A3] = np.split(A, [1, 3], axis = 1)假设A有4列,即A1为第1列,A2为2,3列,A3为第4列;
axis = 1索引为列索引,axis = 0索引为行索引

六.数组数据文件的读写:

方法名用法
save()np.save(文件名,数组名)以二进制方式保存数据
load()np.load(文件名)从二进制文件中读取数据
genfromtext()np.genfromtxt(文件路径,delimiter = ‘,’, names = True)从.csv后缀格式的文件中读取数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值