AI学习前瞻-numpy语法

python概念

python是强类型动态脚本语言。

强类型:不同类型之间不能进行逻辑运算、转换。python有9种数据类型。不同数据类型不能进行转换、加减等。

50+"python" 会报TypeError

动态:变量不需要显示声明类型,变量可以在运行时根据需要自动更改其类型。

pythonVar = 1; //变量为Integer类型
pythonVar = "python" //修改变量类型为字符串
//上述代码能正常执行

脚本:代码运行过程中不需要编译器进行编译,只需要解释器进行解释执行。

上述逻辑推断: java是强类型静态非脚本语言。

python基础语法学习

python的语言简单学习推荐:python基础教程-菜鸟教程

建议读者的学习路线:有过一门语言基础的可以先跳过,因为语法和java语言显示(盲猜测和其他语言类似)基于后面的学习遇到不懂的再去查阅资料。本篇博文只针对与AI相关的python库进行学习使用。

numpy语法学习

NumPy是高性能科学计算和数据分析的基础包,也是我们在使用AI进行数据处理和分析的重要模块。下面我们一起来学习其用法。

大部分文档将ndarray解读为数组,笔者认为不太恰当,此处笔者将数组解读为矩阵(数学专业出身)

#创建py文件
#引入numpy的包
import numpy as np

#可能会报错 提示没有对应的numpy的库,所以需要安装
conda install numpy 
#或者
pio install numpy

有关python模块安装部分, 请参考博主的上一篇博文ai学习前瞻-python环境搭建

array函数
numpy.array(object,dtype=None,copy=true,subok=false,ndmin=0)
属性/参数 描述
object 矩阵或嵌套的数列
dtype 矩阵元素的数据类型,可选
copy 对象是否需要复制,可选
order 创建矩阵的样式,C为行方向,F为列方向,A为任意方向(默认)
subok 默认返回一个与基类类型一致的矩阵
ndmin 指定生产矩阵的最小维度
# 创建一个一维矩阵
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print("一维矩阵的类型:" + str(type(a)))
print("shap属性获取每一维度的元素个数:" + str(a.shape))
print("shap属性获取第一维矩阵个数:" + str(a.shape[0]))

# 创建一个二维矩阵
# 1.列表套列表创建二维矩阵
a = np.array([[1,2,3,4],[5,6,7,8]])
#2.元组套元组创建二维矩阵
a = np.array(((1,2,3,4),(5,6,7,8)))
print("二维矩阵的类型:" + str(type(a)))
print("shap属性获取每一维度的元素个数:" + str(a.shape))
print("shap属性获取第二维矩阵个数:" + str(a.shape[1]))
print("访问矩阵:" + str(a[1][1]))

#将列表转换为一个3维矩阵,且将类型从Int转换为float
a= np.array([1,2,3,4,5],ndmin=3,dtype=float)
array([[[1., 2., 3., 4., 5.]]])
arange函数
numpy.arange(start,stop,step,dtype)
属性/参数 描述
start 矩阵起始值
stop 矩阵结束值
step 步长
type 矩阵的类型
# 创建一个一维矩阵 开始值是1 步长2 最大值不超过10,类型为float
np.arange(1,10,2,float)

#array使用arange生产二维矩阵
np.array([np.arange(1,5),np.arange(1,5),np.arange(1,5)])
random函数
#生成一个大小是10的一维矩阵 矩阵范围为0-1的随机数
np.random.random(10)

#生成一个2行3列的二维矩阵 矩阵范围为0-1的随机数
np.random.random(size=(2,3))

#生成一个大小是10的一维矩阵 矩阵范围为0-5的随机整数 
np.random.randint(5,size=10)

#生成一个大小是10的一维矩阵 矩阵范围为5-10的随机整数 
np.random.randint(5,10,size=10)

#生成一个2行3列的二维矩阵 矩阵范围为5-10的随机数
np.random.randint(5,10,size=(2,3))

#生成一个2行3列的维维矩阵 矩阵范围为标准正态分布
np.random.randn(2,3)
#生成2个3行4列的维维矩阵 矩阵范围为标准正态分布
np.random.randn(2,3,4)

# 使用正态分布生成一个期望是3 方差为4的大小是10的一维矩阵
np.random.normal(loc=3,sacle=4,size=10)
# 使用正态分布生成一个期望是3 方差为4的大小是2行3列的二维矩阵
np.random.normal(loc=3,sacle=4,size=(2,3))
ndarrray函数
待补充
其他创建方式
#zeros(所有矩阵元素为0)
#创建一个一维矩阵 size=3
np.zeros(3)
##创建一个3行4列全是0的矩阵
np.zeros((3,4))

#ones(所有矩阵元素为1)
#创建一个一维矩阵 size=3
np.ones(3)
##创建一个3行4列全是1的矩阵
np.ones((3,4))

#empty(所有矩阵元素为空 分配一块回收的空间,该空间可能有上一个操作的数据)
#创建一个一维矩阵 size=3
np.empty(3)
##创建一个3行4列全空的矩阵
np.zeros((3,4))

#创建一个像某个矩阵行列一样的矩阵
np.empty_like()
np.zeros_like()
np.ones_like()
linspace函数

创建一个等差数列构成的一维矩阵

numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=none)
属性/参数 描述
start 矩阵起始值
stop 矩阵结束值
Num 生成等步长样本的数量。默认样本长度50
endpoint 是否包含结束值,true包含,默认 true
dtype 数据类型
retstep 是否显示等差值 true显示
#生成一个开始值1,结束值为30(不包含)数量为50的等差数列
np.linspace(1,30,50,False,True)
切片和索引
#创建一个 长度12的一维矩阵
arr = np.arange(12)

#reshape 重洗冲另外维度的矩阵
#重塑为3行4列 3*4=12
arr = np.reshape(3,4) 
arr = np.reshape(2,6)
# 3*3 != 12 则下述代码会报错 
arr = np.reshape(3,3)

arr = np.arange(12).reshape(3,4)
# 从3行4列元素中获取 [1-3)行 [1-4)列的元素2行3列的矩阵。
temp = arr[1:3,1:4]
# 从2行3列中获取1行2列的矩阵,copy会复制一份新的矩阵,修改不会影响原来
np.copy(temp[0:1,0:2])=》 np.copy(temp[:1,:2])
改变矩阵维度
#reshape 将低维度从高维度变为低维度,也可以将低维度变为高维度
np.arange(36).reshape(6,6).reshape(2,3,6).reshape(6,6)

#ravel、flatten将多维矩阵变为一维矩阵
arr = np.arange(36).reshape(2,3,6)
arr.ravel()
arr.flatten()
矩阵拼接
#2行4列
a = np.array([[1,2,3,4],[1,2,3,4]])
#2行4列
b = np.array([['a','b','c','d'],['a','b','c','d']])
#水平方向拼接   x轴拼接 -> 4行4列 x轴拼接时 列数需要匹配
print(np.vstack([a,b]))
#等价于
np.concatenate((a,b),0)
#垂直方向拼接   y轴拼接 -> 2行8列 y轴拼接时 行数需要匹配
np.hstack([a,b])
#等价于
np.concatenate((a,b),0))

#多维度矩阵拼接 需要使用concatenate
a = np.arange(36).reshape(2,3,6)
b = np.arange(36).reshape(2,3,6)
#a和b都是2个3行6列的三维矩阵

#按照第一个维度拼接 4个3行6列的三维矩阵
np.concatenate((a,b),0))
#按照第一个维度拼接 2个6行6列的三维矩阵
np.concatenate((a,b),1))
#按照第一个维度拼接 2个3行12列的三维矩阵
np.concatenate((a,b),2))
矩阵分隔
numpy.split(arr,indices_or_sections,axios)
属性/参数 描述
Arr 要分隔的矩阵
indices_or_sections 矩阵:指定分割点的索引位置
整数:将矩阵平均分割的段数
Num 生成等步长样本的数量。默认样本长度50
endpoint 是否包含结束值,true包含,默认 true
dtype 数据类型
retstep 是否显示等差值 true显示
#4行3列的二维矩阵
a = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
# 将二维矩阵 按照行平均分隔为2份。
np.split(a,2,0)
#等价于
np.vsplit(a,2)
# 3的话无法按行平均分配 所以会报错
np.split(a,3,0)

# 将二维矩阵 按照列平均分隔为2份。
np.split(a,3,1)
#等价于
np.hsplit(a,3)
# 3的话无法按列平均分配 所以会报错
np.split(a,2,0)
矩阵转置

将矩阵的行列互换得到的新矩阵称为转置矩阵。

#创建一个2行3列的二维矩阵
arr = np.array([[1, 2, 3], [4, 5, 6]])
#矩阵转置变为3行两列 [[1,4], [2, 5],[3,6]]
print(arr.transpose())
print(np.transpose(arr))
算术函数

NumPy 数组的“加减乘除”算术运算,分别对应 add()、subtract()、multiple() 以及 divide() 函数。

注意:做算术运算时,矩阵必须具有相同的形状,或者符合数组的广播机制,才可以执行运算。

当运算中两个数组的形状不同使时,numpy将会自动触发广播机制

函数 简写 描述
np.add(a, b) a+b
np.subtract(a, b) a-b
np.mutiply(a, b) a*b
np.divide(a, b) a/b
np.power(a, b) a^b 将a中的元素作为底数,计算a与b中相应元素的幂
np.mod(a,b) a%b 计算输入数组中相应元素的相除后的余数
数学函数

NumPy提供了一系列的数学三角函数,这些函数都是以numpy库中的子模块形式提供的。

函数 描述
numpy.sin(x) 计算x的正弦值
numpy.cos(x) 计算x的余弦值
numpy.tan(x): 计算x的正切值。
numpy.degrees(x): 将弧度转换为角度。
numpy.radians(x): 将角度转换为弧度
numpy.deg2rad(x): 将角度转换为弧度
numpy.rad2deg(x) 将弧度转换为角度
聚合函数
函数 描述
np.amin() 计算数组中的元素沿指定轴的最小值
np.amax() 计算数组中的元素沿指定轴的最大值
np.ptp() 计算数组中元素沿指定轴最大值与最小值的差(最大值 - 最小值)
np.mean() 计算数组中元素沿指定轴的算术平均值
np.average() 计算数组中元素沿指定轴的平均值,可以指定权重数组计算加权平均值
np.std() 计算标准差
np.var() 计算方差

相关推荐

  1. AI学习前瞻-numpy语法

    2024-03-22 00:16:03       30 阅读
  2. numpy学习

    2024-03-22 00:16:03       12 阅读
  3. numpy学习

    2024-03-22 00:16:03       8 阅读
  4. numpy 学习笔记

    2024-03-22 00:16:03       26 阅读
  5. Python numpy 学习笔记

    2024-03-22 00:16:03       16 阅读
  6. Python学习-Numpy-2

    2024-03-22 00:16:03       13 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 00:16:03       3 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 00:16:03       4 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 00:16:03       2 阅读
  4. Python语言-面向对象

    2024-03-22 00:16:03       2 阅读

热门阅读

  1. 【详细讲解如何快速上手Vue.js框架】

    2024-03-22 00:16:03       27 阅读
  2. 阿里云关系型数据库RDS概述

    2024-03-22 00:16:03       24 阅读
  3. 2024年数据隐私将成为定义科技问题的关键问题。

    2024-03-22 00:16:03       26 阅读
  4. 【环境搭建】Ubuntu16 C++

    2024-03-22 00:16:03       23 阅读
  5. Pyqt5专栏目录索引

    2024-03-22 00:16:03       26 阅读
  6. python排序算法代码

    2024-03-22 00:16:03       27 阅读
  7. 字符串之间的相似度的评价指标汇总

    2024-03-22 00:16:03       25 阅读
  8. 5465: 【搜索】奶牛干饭

    2024-03-22 00:16:03       25 阅读
  9. http模块 如何获取http请求的报文?

    2024-03-22 00:16:03       27 阅读
  10. 读代码整洁之道总结

    2024-03-22 00:16:03       25 阅读
  11. Python Web开发记录 Day14:Django part8 订单管理

    2024-03-22 00:16:03       21 阅读