【机器学习基础 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

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...