AI学习前瞻-numpy语法

2024-03-17 17:20
文章标签 ai 学习 语法 numpy 前瞻

本文主要是介绍AI学习前瞻-numpy语法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

numpy语法

      • python概念
      • python基础语法学习
      • numpy语法学习
        • array函数
        • arange函数
        • random函数
        • ndarrray函数
        • 其他创建方式
        • linspace函数
        • 切片和索引
        • 改变矩阵维度
        • 矩阵拼接
        • 矩阵分隔
        • 矩阵转置
        • 算术函数
        • 数学函数
        • 聚合函数

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()计算方差

这篇关于AI学习前瞻-numpy语法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/819621

相关文章

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用