Python数据分析之NumPy(2)——NumPy核心概念强化篇

Python-Numpy学习之【ndim、shape、dtype函数的区别】 刚开始学习numpy,对ndim、shape还有dtype这几个函数的含义有些混淆,所以简单记录下。 ndim函数:返回一个数字,确定数组的维度 备注:个人小技巧(不知道准不准),从列表转数组时,确定数组的维度的话可以看一开始中括号的个数,几个中括号就是几维。 shape函数:返回一个元组,确定各个维度的元素个数 对于arr11:它是一个一维数组,返回的(4,)代表一维里面有四个元素 对于arr22:它是一个二维数组,返回的(2,3)中 2 代表的是行(row),代表一维里面有2个元素,3代表的是列(c 阅读详情

本文作为学习NumPy快速教程之后的知识补充,只有真正、正确地理解了每个概念意思,才会再以后的学习过程中少走弯路。

在NumPy的学习中,我们最重要的学习目标就是它的ndarray对象。

1. 数组对象

在这里插入图片描述

  • 三个基本对象:

1.ndarray本身
ndarray是同质的(homogenous):每个项目占用相同大小的内存块, 并且所有块都以完全相同的方式解释。
好处:
数组对象采用相同的数据类型,有助于节省运算和存储空间
2.数据类型(data-type object)
描述数组中单个固定大小元素布局的数据类型对象
3.数组标量(array-scalar)
访问数组的单个元素时返回的数组标量Python对象

  • ndarray对象
    ndarray是NumPy数组的类。
    ndarray最常见的属性:
    nidm:数组维度的个数
    shape:数组每个维度上元素的个数
    size:数组所有维度元素个数的总数

可以看到这三个属性都是围绕数组的元素和数组的维度来进行的(最核心的还是元素):

  1. nidm 表示的是数组维度的个数。

  2. shape 能反映每个维度所含有的元素数量,其实shape还隐含了维度的个数——shape( )输入的参数(元组中)有几个数字即代表数组有几个维度!所以,要记住,通过shape能够知道数组的维度数以及数组的大小。
    在这里插入图片描述
    注意一个误区:shape并非一定表示的是数组有几行几列!,比如一维向量的情况。

  3. size 反应的是整个数组所有元素的一个统计。

2. Numpy 中维度(dimentio)与轴 (axis)

首先要明白,在NumPy中
维度 (dimension) = 轴 (axis)
——官方的定义是:“ In NumPy dimensions are called axes.”,即,在NumPy中,(数组的)维度被称为轴。

判断一个数组轴的数量,分享下我自己的方法:最直观的是看[ ]的数量,有几层中括号就有几个维度/轴。还有一个方法是,查看数组shape,有几个元素,就有几个维度/轴。个人感觉方法很土,但也比较简单。

3.NumPy 的 ndim 与矩阵的秩 (rank)

首先要明白,NumPy中的 ndim 是(NumPy)数组含有的维度的个数或者说轴的个数。(上面已经提到“维度”和“轴”等价)

那么维度/轴的个数——ndim,跟矩阵的秩又是什么关系呢?
先给结论:
NumPy 中的 ndim = rank(NumPy中的秩) ≠ 线代中rank(矩阵的秩)

——官方(NumPy v1.12)的定义:“The number of axes is rank.”(在最新的官方文档-NumPy v1.17中,似乎已经没有了这个定义,或者移动位置了?)
说白了,在NumPy中,秩(rank) = ndim
举个例子:
例如,在三维空间中 [1, 2, 1] 的点的坐标是秩为1的数组,因为它有一个轴,这个轴的长度是3。对于下面的例子,这个数组的秩是2(它是二维的),第一个维度(轴)的长度是2,第二个维度的长度是3。

[[ 1., 0., 0.],
[ 0., 1., 2.]]

因此,NumPy中的秩,完全不同于在线性代数中,矩阵的秩。自然而然,NumPy中的维度也就不同于我们熟悉的数学中的维度,前者指的是数组维度的大小或者/轴的数量,而后者,指的是在空间中表示一个点所需要的最少坐标个数。

4. 一个坑:NumPy中的向量

先看代码后面的情况说明:

a = np.array(range(3)) 
b = a.T
c = a.transpose()
d = a[:, np.newaxis]
e = a.reshape(3, 1)
print("a:", a)
print("a.T:", b) 
print("a.transpose:", c)  
print("d: \n", d) 
print("e: \n", e)

4.1 一维数组在NumPy中到底是行向量还是列向量?

一维数组在NumPy中打印的结果是一行数组,因为
numpy 默认把列向量转化为行向量

在这里插入图片描述

4.2 一维数组如何转置?

使用 b 和 c 的方法不成功;
使用 d 和 e 两种方法都可以!
在这里插入图片描述

4.3 一维数组转置后的属性?

注意看一维数组转置前后的shape
在这里插入图片描述

5. 一些常用函数和操作

5.1 生成数组常用的numpy.random模块:

大致功能查看:
① 随机生成[0,1)之间的浮点数
np.random.random()
np.random.rand()
② 标准正态分布随机数
np.random.randn()
③ 产生随机整数
np.random.randint()
④ 将序列的所有元素随机排序
np.random.shuffle()
在这里插入图片描述
在这里插入图片描述
输入参数的格式可以参考下表:
在这里插入图片描述

待续…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】3.38 用NumPy实现深度强化学习 为了演示,我们以一个简单的迷宫环境为例,智能体需要在环境中找到目标位置。self.state = np.array([0, 0]) # 初始状态self.goal = np.array([4, 4]) # 目标位置self.maze = np.zeros((5, 5)) # 迷宫大小self.maze[self.goal[0], self.goal[1]] = 1 # 目标位置标记为1self.maze[3, 1] = -1 # 设定障碍物# 重置环境# 执行动作并返回新的状态、奖励和是否终止。 阅读详情

相关推荐

使用 Python 进行强化学习应用

强化学习是一种让机器学会如何通过试错来完成目标的方法。智能体(Agent):执行动作的主体。环境(Environment):提供状态反馈并给予奖励或惩罚。状态(State):当前环境的情况。动作(Action):智能体根据当前状态采取的行为。奖励(Reward):衡量动作的好坏。策略(Policy):决定智能体在每个状态下应该采取什么动作。强化学习的目标是找到一种最优策略,使得智能体能够最大化累积奖励。通过本文的学习,我们了解了强化学习的基本概念及其在 Python 中的应用方式。

2501_91227993的博客 1359

javascript ES5中 foreach()遍历方法

forcach() array.forEach(function(currentValue, index, arr)) currentValue:数组当前项的值 index:数组当前项的索引 (可选) arr:数组对象本身 filter() 方法创建一个新的数组, 新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组 注意它直接返回一个新数组 代码: <script> var arr=[50,86,12,10,0,38]; var newa

weixin_44638167的博客 6304

Python实战强化学习:5本经典书籍助你从零掌握核心算法

本文为Python开发者精选了5本强化学习经典书籍,涵盖从理论基石到实战进阶的全路径。通过《强化学习导论》构建理论框架,结合《动手学强化学习》等实战指南的Python代码实践,帮助读者从零掌握Q-learning、深度强化学习等核心算法,并有效应用于项目开发。

weixin_29082143的博客 715

python中ndim是什么意思_【Python】numpy中 ndarray.ndim 到底什么意思?

http://blog.chinaunix.net/uid…>>> aarray([ 1., 2., 3.])>>> barray([[ 1.5, 2. , 3. ],[ 4. , 5. , 6. ]])>>> carray([[ 0., 0., 0., 0.],[ 0., 0., 0., 0.],[ 0., 0., ...

weixin_32767137的博客 1万+

Python-Numpy超级详细讲解,数据分析,机器学习,强化学习,NLP,CV必看

Numpy详细讲解

weixin_39490300的博客 886

数据分析篇开始 - NumPy 基础

欢迎进入 **数据分析篇**!Python 已经成为数据分析领域的首选语言,而 NumPy 则是整个数据科学生态的基石。本篇将从零开始,系统学习 NumPy 的核心功能:**数组创建**、**向量化运算**、**广播机制**和**线性代数**,为后续学习 Pandas、Matplotlib 和机器学习打下坚实基础。

wo1141786653的博客 35

chatgpt赋能Python-python_ndim

在Python中,ndim是一个数组对象的属性,它表示该数组的维数。ndim是“number of dimensions”的缩写,中文意为“维度数”。例如,一个一维数组的ndim为1,一个二维数组的ndim为2,以此类推。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。

reilust的博客 1575

基于Python的Q-learning强化学习算法实践

Python作为一种高级编程语言,因简洁易学、开发效率高而广受开发者欢迎。其广泛应用于数据科学、网络开发、自动化脚本编写等领域。在机器学习领域,Python具有丰富的库资源和社区支持,使它成为构建和实现各种算法的理想选择。尤其在强化学习领域,Python强大的库支持和易于理解的语法,使研究人员和开发者能更快速地实现复杂的模型。强化学习是机器学习的一个分支,旨在训练智能体如何在特定的环境中采取行动,以最大化累积奖励。其核心是通过与环境的交互学习最优策略,这一过程往往不需要大量标注数据,具有自学的能力。

weixin_35516624的博客 1598

numpy入门教程

(内附代码)NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。

Aaadsda414114的博客 788

Python实现强化学习算法:Q学习算法实战指南

强化学习是机器学习中的一个重要分支,它模拟了人类的学习过程,通过与环境的交互,智能体能够学习到在特定状态下执行最优动作的策略。它在游戏AI、机器人控制、推荐系统等众多领域中发挥着重要作用。在强化学习过程中,智能体通过试错的方式学习,奖赏机制是其核心组成部分,它能够指引智能体向期望的行为靠拢。本章将引领读者进入强化学习的世界,为后续章节中深入探讨Q学习和其他算法打下坚实基础。搭建好Python环境之后,接下来是安装强化学习库。Python社区提供了大量的库,其中最常用的强化学习库是。

weixin_34718952的博客 951

Python实现的多智能体强化学习实战项目

强化学习(Reinforcement Learning,RL)是机器学习的一个分支,它允许软件代理通过从环境中接收反馈来学习如何在特定环境中行动,以达到某个特定目标。强化学习的训练过程是通过试错来进行的,这与生物进化和动物行为的学习方式类似。多智能体强化学习(MARL)是强化学习(RL)的一个分支,它允许多个学习智能体同时在一个环境中学习,并通过相互作用来实现其目标。MARL的关键特点包括但不限于学习智能体之间的相互依赖性、环境的非确定性、以及每个智能体的局部信息和全局目标之间的不一致性。

weixin_42573757的博客 1892

【码银送书第二十二期】《Python数据分析从入门到精通(第2版)》

丛书说明:“软件开发视频大讲堂‘’丛书第1版于2008年8月出版,因其编写细腻、易学实用、配备海量学习资源和全程视频等,在软件开发类图书市场上产生了很大反响,绝大部分品种在全国软件开发零售图书排行榜中名列前茅,2009年多个品种被评为”全国优秀畅销书“。“软件开发视频大讲堂”丛书第2版于2010年8月出版,第3版于2012年8月出版,第4版予2016年10月出版,第5版于2019年3月出版,第6版于2021年7月出版。十五年间反复锤炼,打造经典。

码银的博客 4376

Windows下PaddleOCR GPU版环境搭建全攻略(含CUDA 11.7避坑指南)

本文提供了一份详尽的Windows平台PaddleOCR GPU版环境搭建指南,重点涵盖CUDA 11.7与cuDNN的版本匹配、环境变量配置及常见避坑方法。通过使用Conda创建虚拟环境并安装匹配的PaddlePaddle-gpu版本,最终实现GPU加速的OCR推理,帮助开发者构建稳定高效的开发环境。

docker7nomad的博客 751

Python数据分析 -- Pandas基础入门学习笔记:从核心概念到实操代码

Pandas基础入门摘要 Pandas是Python数据分析的核心工具,提供两种主要数据结构:Series(带标签的一维数组)和DataFrame(二维表格)。本文从零开始讲解Pandas基础操作,包含: 数据结构比较:Pandas的Series/DataFrame相比Python原生结构(列表/字典)具有标签索引、高效运算等优势 Series操作:5种创建方式(列表/字典/NumPy数组等)、核心属性获取与修改(索引、值、名称) DataFrame操作:4种创建方法(字典/文件读取/NumPy数组/空表)

2401_86509639的博客 847

《基于Yolo算法的火灾检测系统设计与实现》开题报告

在消防安全领域,火灾对生命财产安全构成严重威胁。传统的火灾检测手段存在诸多不足,如误报率高、检测范围有限、响应速度慢等。基于 Yolo 算法的火灾检测系统能够利用深度学习技术,实现对火灾的高效、精准检测,具有重要的现实意义。         从社会安全角度看,该系统可以广泛应用于各类公共场所、工业厂房和居民住宅,实时监测火灾隐患,及时发出警报,为人员疏散和消防救援争取宝贵时间,有效降低火灾造成的人员伤亡和财产损失,保障社会公共安全。

m0_69704149的博客 1384

DeepSeek+Dify实战:零代码构建智能SQL生成器

本文详细介绍了如何利用DeepSeek和Dify零代码构建智能SQL生成器,帮助非技术人员通过自然语言查询数据库。文章涵盖从数据准备、知识库设计到Agent配置的全流程,并提供了优化技巧和实际应用案例,显著提升团队数据查询效率。

weixin_29311017的博客 419

Python 数据分析学习路线

对于希望使用Python来完成数据分析工作的人来说,学习IPython、Numpy、pandas、Matplotlib这个组合是目前看来不错的方向。《Python数据分析从入门到精通》就是这样一本循序渐进的书。《Python数据分析从入门到精通》共3篇14章。第1篇是Python数据分析语法入门,将数据分析用到的一些语言的语法基础讲解清楚,为接下来的数据分析做铺垫。

weixin_50804299的博客 1万+

DDPG算法实战:用Python一步步实现深度强化学习中的连续动作控制

本文详细介绍了DDPG算法在深度强化学习中的连续动作控制应用,通过Python和PyTorch实现从零构建智能体。内容涵盖环境搭建、网络架构设计、经验回放、OU噪声实现及训练流程优化,帮助开发者掌握DDPG在机械臂控制等场景的核心技术。

weixin_30335575的博客 416

原创:《Python之路实战40篇》PDF高清版,限时下载!

内容简介1《Python之路40篇实战 .pdf》包含Python篇、数据分析篇、机器学习篇等3大模块,目录如下:下载方式2关注公众号「Python与算法社区」,后台回复一个数字「1...

tongtongjing1765的博客 2198

Codex接入CCSwitch:本地代理与模型路由配置指南

在AI编程工具链中,本地代理与模型路由是连接智能体与模型服务的核心桥梁。Codex作为OpenAI推出的编程智能体,虽然具备强大的仓库理解和自主编码能力,但其默认模型链路固定,导致在多模型切换、内网统一管理及成本控制上存在天然瓶颈。CCSwitch正是为解决这一痛点而生的本地代理工具,它通过OpenAI兼容协议将Codex的请求透明转发至DeepSeek、通义千问等第三方模型服务,使模型切换如同点击按钮般简单。本文从本地代理和模型路由器的基础原理切入,系统讲解Codex与CCSwitch的安装配置、模型ID

weixin_33910460的博客 428

Vue - 简约大气 404 页面

效果图 实现代码 复制即可。 <template> <div> <div class="error"> <!-- 图片可保存到本地 --> <img src="https://img-blog.csdnimg.cn/20210715111039922.png"> <p>抱歉!你访问的页面不存在或已删除 :( </p> <span class="back" @click="go(

🏆 前端领域优质创作者 3371

Python 强化学习的基本概念与应用场景

强化学习是一个充满挑战和机遇的研究领域,它不仅推动了人工智能的发展,也为解决实际问题提供了新的思路和方法。随着Python生态系统的不断完善,相信未来会有更多优秀的强化学习作品涌现出来。```

2501_90726293的博客 580

小龙虾 OpenClaw 权限全攻略:轻松激活 elevated (最新版 OpenClaw 自动化任务降智、无权限、无法执行sudo等系统命令、提升 elevated 权限的解决方案)

升级小龙虾 OpenClaw 后权限不足?elevated 报错?📛 本文教你如何正确配置 OpenClaw 权限💻,让自动化任务顺利执行 🚀

XiaoqiangClub的博客 733

NumPy+Pandas数据分析34集教程:从基础到量化项目实战

在数据分析与工程实践中,NumPy与Pandas是两大核心基础库。NumPy以数组对象和向量化计算为基石,通过NumPy切片与广播机制实现高效数值运算;Pandas则基于DataFrame与Series提供灵活的数据处理能力。理解二者的底层原理,有助于解决实际业务中的诸多痛点,例如数据清洗时经常遇到的数据类型转换问题,或需要按多列去重时执行类似“指定两列均相同则取第一条”的操作。这些需求在金融、运营等典型数据分析场景中高频出现,覆盖了从数据接入、预处理到聚合建模的完整链路。当学习者围绕“数据分析案例”展开训

weixin_34293911的博客 303

SAP生产订单技术性完成(TECO)操作指南与实战应用

生产订单技术关闭操作指南主要包括单笔和批量关闭两种方式,通过CO02/COHV事务码完成。

m0_47402127的博客 1932

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: Python数据分析之Pandas(1)——Pandas官方文档解读:一篇文章 Pandas 快速上手
下一篇: 疑难杂症之Python——'numpy.ndarray' object has no attribute 'array'
Robin_Pi
博客等级 码龄9年 2万+粉丝 632原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值