机器学习|深度学习|重磅推出---全网最全Numpy简明教程(一)

本教程面向初学者的Numpy简明教程,学好Numpy才能在深度学习、机器学习、AI等领域进军,如果感觉此文不错,欢迎和博主交流探讨

文章目录

1、Numpy介绍

Numeric Python 数字的Python

NumPy系统是Python的一种开源的数值计算扩展

  1. 一个强大的N维数组对象ndarray
  2. 拥有比较成熟的函数库
  3. 用于整合C/C++和Fortran代码的工具包
  4. 可以实现线性代数、傅里叶变换和随机数生成函数
  5. Numpy和稀疏矩阵运算包Scipy配合使用更加强大

Numpy主要用于数组的计算,主要应用于机器学习和深度学习领域,所有我们就有必要了解AI的本质是什么

现在的AI模型本质上是在进行数学运算

数学运算中主要是在做矩阵运算

在计算机中,最擅长做计算

矩阵的计算比较快,我们可以通过一定的方法,把生活中的事物,抽象成矩阵

Numpy中提供了一种数据类型:ndarray数组,nd--->n dimension n个维度

当然,在Python中,列表也是可以表示多维数组

但是,Python中列表存在缺陷:

  1. 查询速度慢

  2. 占用空间大

python 复制代码
# 导入numpy库,并查看numpy版本  
# 为什么需要关注版本信息?  因为有些情况下,版本会出现不兼容情况  
import numpy as np  
print(np.__version__)  
  
# __sizeof__是Python提供的魔术方法,可以查看对象的占用内存  
lst1 = [i for i in range(10000)]  
print(lst1.__sizeof__())  
  
nd1 = np.array([i for i in range(10000)])  
print(nd1.__sizeof__())


单下划线开头:一般用于类内的私有属性或方法
双下划线开头:一般为Python内置的属性,不推荐你自己的代码使用双下划线开头
双下划线开头和单下划线结尾:Python内置的魔术方法或属性

2、创建ndarray数组

在创建ndarray数组之前,需要先导入Numpy这个包

python 复制代码
import numpy as np  
print(np.__version__)  # 查看版本信息

创建ndarray数组可以使用:

  1. 列表
  2. routines函数 常规函数

2.1、np.array

python 复制代码
# 导入numpy库,并查看numpy版本  
# 为什么需要关注版本信息?  因为有些情况下,版本会出现不兼容情况  
import numpy as np  
print(np.__version__)  
  
# 参数为一个列表  
nd1 = np.array([1, 2, 3])  
  
print(nd1, type(nd1))  
  
# 将ndarray转换为list  
lst1 = nd1.tolist()  
print(lst1, type(lst1))  
  
# 假设使用np.array()创建ndarray数组,参数中传递不一样的数据类型  
# 会将数据类型转换为统一的数据类型  
nd2 = np.array([1.2, 1, 3])  
print(nd2, nd2.dtype)

2.2、np.ones

创建一个ndarray数组,里面元素全部为1

order这个参数直接默认值就可以,一般不用去修改

one表示1,加一个s,表示里面存在很多1

python 复制代码
import numpy as np  
print(np.__version__)  
  
# shape指定创建ndarray形状,默认创建出来ndarray的dtype为float  
# dtype指定数据类型  
nd1 = np.ones(shape=(3, 4))
print(nd1, type(nd1))

nd2 = np.ones(shape=(3, 4), dtype=np.int32)
print(nd2, type(nd2))

2.3、np.zeros

参考上一个routine函数:np.ones

一个是创建一个全是0的数组

一个是创建一个全为1的数组

python 复制代码
import numpy as np
print(np.__version__)  # 查看版本信息

nd1 = np.zeros(shape=(4, 2))
print(nd1, type(nd1))

2.4、np.full

用指定元素进行填充

python 复制代码
import numpy as np
print(np.__version__)  # 查看版本信息

nd1 = np.full(shape=(4, 3), fill_value=10)
print(nd1)

2.5、np.eye

python 复制代码
import numpy as np
print(np.__version__)  # 查看版本信息

# 生成一个二维矩阵,对角线上全部为1(需要列和行相等),其余位置为0  
# k控制主对角线,往上走几下  
nd1 = np.eye(4, 4, k=0)
nd2 = np.eye(4, 4, k=1)
nd3 = np.eye(4, 4, k=2)

print(nd1)
print(nd2)
print(nd3)

方阵:行数和列数相同的矩阵
单位矩阵:在方阵的基础上,主对角线上全部为1,其他位置全是0的方阵
满秩矩阵:如果一个矩阵可以变为单位矩阵,那么我们把这个矩阵叫做满秩矩阵

2.6、np.linspace

python 复制代码
import numpy as np
print(np.__version__)  # 查看版本信息

# 创建一个等差数列  
# def linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None,  
#              axis=0):  
# endpoint=True默认包括stop值  
# retstep=False默认不显示间隔  
nd1 = np.linspace(1, 10, num=10)
print(nd1)

nd2 = np.linspace(1, 10, num=10, retstep=True)
print(nd2)

2.7、np.arange

和Python中的range()函数类似

python 复制代码
import numpy as np
print(np.__version__)  # 查看版本信息

nd1 = np.arange(10)
print(nd1)


当使用非整数步长(如0.1)时,结果通常不一致。最好使用numpy。这些情况下的Linspace

小数会带来数据的不准确,当需要使用小数作为步长的时候,最好使用"numpy.linspace"

2.8、np.random.randint

在Python中,不存在真正的随机数,随机数是通过当前系统时间,作为时间戳,当作种子,放入算法,算出时间。

当,随机数种子固定,每次产生随机数字一致

python 复制代码
import numpy as np
print(np.__version__)  # 查看版本信息

nd1 = np.random.randint(1, 10, size=(4, 2))
print(nd1)

Numpy中的random.randint和Python中的random.randint几乎一样,都是产生随机整数

但是,Numpy中的random.randint指定的整数为左闭右开

Python中的random.randint为全闭区间

2.9、np.random.random

产生[ 0,1 ) 之间的小数

python 复制代码
import numpy as np
print(np.__version__)  # 查看版本信息

nd1 = np.random.random(size=(4, 2))
print(nd1)

2.10、np.random.rand

类似于np.random.random

python 复制代码
import numpy as np

print(np.__version__)

nd1 = np.random.rand(3, 2)
print(nd1)
print(nd1.mean())  # 求均值

2.11、np.random.normal

创建正太分布(高斯分布)

首先,我们需要了解什么是正太分布(高斯分布)?

python 复制代码
import numpy as np
print(np.__version__)  # 查看版本信息

# 给出的数据越多,最后计算出的均值就越接近于给定均值
nd1 = np.random.normal(1, 3, size=(4, 4))
print(nd1)
print(nd1.mean())  # 求均值

2.12、np.random.randn

生成一个标准正太分布的ndarray数组

首先,我们需要了解什么是标准正太分布?

python 复制代码
import numpy as np
print(np.__version__)  # 查看版本信息

nd1 = np.random.randn(4, 3)
print(nd1)
print(nd1.mean())  # 求均值

3、ndarray属性

4个必须记住的ndarray属性:

  1. ndim 维度 dimension
    维度可以使用ndim查看,也可以打印出ndarray数组,查看几层中括号,有2层,就是二维数组
  2. shape 形状(每一个维度的长度)
  3. size 总长度(每一个维度的长度相乘)
  4. dtype 元素类型
python 复制代码
import numpy as np

print(np.__version__)

# def full(shape, fill_value, dtype=None, order='C'):
nd1 = np.full(shape=(4, 3), fill_value=20)
print(nd1)

# dimension维度
print(nd1.ndim)

# shape形状
print(nd1.shape)

# 元素个数  
print(nd1.size)

# 元素数据类型
print(nd1.dtype)
相关推荐
幽络源小助理5 分钟前
Python使用requests_html库爬取掌阅书籍(附完整源码及使用说明)
python·html·python爬虫·爬虫教程·requests_html·爬取书籍·掌阅
取个名字真难呐6 分钟前
LossMaskMatrix损失函数掩码矩阵
python·深度学习·矩阵
南宫理的日知录7 分钟前
「Python数据科学」标量、向量、矩阵、张量与多维数组的辨析
python·numpy·数据科学
soulteary9 分钟前
使用 AI 辅助开发一个开源 IP 信息查询工具:一
人工智能·tcp/ip·开源·ip 查询
爱补鱼的猫猫15 分钟前
2、Bert论文笔记
论文阅读·人工智能·bert
GZ同学25 分钟前
Arcgis中python工具箱制造要点及统计要素图层字段信息工具分享
python·arcgis
Kenneth風车1 小时前
【机器学习(九)】分类和回归任务-多层感知机(Multilayer Perceptron,MLP)算法-Sentosa_DSML社区版 (1)111
算法·机器学习·分类
盼小辉丶1 小时前
TensorFlow深度学习实战(2)——使用TensorFlow构建神经网络
深度学习·神经网络·tensorflow
起名字什么的好难1 小时前
conda虚拟环境安装pytorch gpu版
人工智能·pytorch·conda
18号房客1 小时前
计算机视觉-人工智能(AI)入门教程一
人工智能·深度学习·opencv·机器学习·计算机视觉·数据挖掘·语音识别