【机器学习基础 1】numpy库
创始人
2024-06-01 12:13:37
0

一、什么是numpy库

        NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。(转自numpy_百度百科 (baidu.com))

        在开始之前,我们要知道numpy库在使用时,通常会简化为“np”(牛啤库),因此我们会像这样:(接下来np即指numpy)

import numpy as np

二、关于矩阵和向量

1、用numpy表达矩阵

        矩阵有行和列,那么自然我们可以用二维数组(列表)进行创建

  在此之前先看看一维数组(列表)在np中的效果:

lst = [1, 2, 3]
y = np.array(lst, )
print(y, type(y))>>> [1 2 3] 

 所以用二维数组(列表)创建出的矩阵是这样:

lst_2 = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]
A = np.array(lst_2, )
print(A, type(A))>>> [[1 2 3]
>>>  [4 5 6]
>>>  [7 8 9]] 

 那么三维的则是:

B = np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9]],[[1, 2, 3], [4, 5, 6], [7, 8, 9]],[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
])
print(B, type(B))>>> [[[1 2 3]
>>>   [4 5 6]
>>>   [7 8 9]]
>>> 
>>>  [[1 2 3]
>>>   [4 5 6]
>>>   [7 8 9]]
>>> 
>>>  [[1 2 3]
>>>   [4 5 6]
>>>   [7 8 9]]] 

2、计算两个向量或矩阵的内积

注意:计算符号为 @ 

向量内积

对应元素相乘再相加

y1 = np.array([1, 2, 3])
y2 = np.array([3, 4, 5])
print(y1 @ y2)>>> 26

矩阵内积

A的列数 等于 B的行数 (线性代数) --> 3*5矩阵 和 5*n矩阵 最终得 3*n矩阵

A = np.array(lst_2, )
B = np.array([[1, 2, 3, 6, 10],[7, 2, 3, 8, 3],[10, 2, 3, 0, 7]])
C = A @ B
print(C)>>> [[ 45  12  18  22  37]
>>>  [ 99  30  45  64  97]
>>>  [153  48  72 106 157]]

三、numpy的基础操作

1、创建 NumPy 数组

# 从列表创建
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)# 从元组创建
arr2 = np.array((1, 2, 3, 4, 5))
print(arr2)# 创建二维数组
arr3 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr3)# 特殊矩阵
print(np.eye(5))  # 单位矩阵
print(np.zeros(shape=(3, 4)))  # 零矩阵
E = np.ones(shape=(3, 4))  # 1矩阵
print(E)

 样例输出:

>>> [1 2 3 4 5]>>> [1 2 3 4 5]>>> [[1 2 3]
>>>  [4 5 6]]>>> [[1. 0. 0. 0. 0.]
>>>  [0. 1. 0. 0. 0.]
>>>  [0. 0. 1. 0. 0.]
>>>  [0. 0. 0. 1. 0.]
>>>  [0. 0. 0. 0. 1.]]>>> [[0. 0. 0. 0.]
>>>  [0. 0. 0. 0.]
>>>  [0. 0. 0. 0.]]>>> [[1. 1. 1. 1.]
>>>  [1. 1. 1. 1.]
>>>  [1. 1. 1. 1.]]

2、数组属性

# 数组维度
print(arr3.ndim)# 数组形状
print(arr3.shape)# 数组大小
print(arr3.size)# 数组元素类型
print(arr3.dtype)

样例输出:

>>> 2
>>> (2, 3)
>>> 6
>>> int64

3、数组操作

# 数组切片
print(arr3[0, 0])  # 第一个元素
print(arr3[0, :])  # 第一行元素
print(arr3[:, 0])  # 第一列元素# 数组重塑
arr4 = np.arange(12)
print(arr4)
arr5 = arr4.reshape((3, 4))
print(arr5)# 数组拼接
arr6 = np.array([[7, 8, 9]])
arr7 = np.concatenate((arr3, arr6), axis=0)
print(arr7)# 数组转置
E = np.ones(shape=(3, 4))  # 1矩阵
print(E.T)  # 矩阵转置

样例输出:

>>> 1>>> [1 2 3]>>> [1 4]>>> [ 0  1  2  3  4  5  6  7  8  9 10 11]>>> [[ 0  1  2  3]
>>>  [ 4  5  6  7]
>>>  [ 8  9 10 11]]>>> [[1 2 3]
>>>  [4 5 6]
>>>  [7 8 9]]>>> [[1. 1. 1.]
>>>  [1. 1. 1.]
>>>  [1. 1. 1.]
>>>  [1. 1. 1.]]

4、数组计算

# 数组加减乘除
arr8 = np.array([1, 2, 3])
arr9 = np.array([4, 5, 6])
print(arr8 + arr9)
print(arr8 - arr9)
print(arr8 * arr9)
print(arr8 / arr9)# 矩阵乘法
arr10 = np.array([[1, 2], [3, 4]])
arr11 = np.array([[5, 6], [7, 8]])
print(np.dot(arr10, arr11))

样例输出: 

>>> [5 7 9]
>>> [-3 -3 -3]
>>> [ 4 10 18]
>>> [0.25 0.4  0.5 ]>>> [[19 22]
>>>  [43 50]]

四、统计计算和算术计算

y = np.array([1, 2, 3])
r1 = np.sum(y)    # 和
print(r1)
r2 = np.mean(y)    # 均值
print(r2)
r3 = np.var(y)    # 方差
print(r3)>>> 6
>>> 2.0
>>> 0.6666666666666666

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...