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

相关文章

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撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G