Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?

目录

  • [1 讲故事](#1 讲故事)
  • [2 欢迎纠错](#2 欢迎纠错)
  • [3 论文写作/Python 学习智能体](#3 论文写作/Python 学习智能体)

1 讲故事

直接上代码。

python 复制代码
def npy1():
    """
    说人话,说说数组维度。
    """
    """
    我们用"煎饼"和"煎饼包装袋"类比各维数组。
    这里"煎饼"想像成薄薄"一张纸",是个"平面",不是叠了好几层那种。
    """
    """
    一维数组:
    可以是一个或多个一维数组,类似作为"煎饼制作材料"的面粉啊、胡萝卜丝啊等等。
    """
    """
    一个二维数组:
    把"煎饼制作材料"笼络起来,做"煎饼",形成一张"煎饼"平面。
    二维数组如果三行两列,形状可写作(3, 2)。
    这样也可以卖,但人手能直接接触"煎饼",不卫生,下边我们给它裹起来。
    """
    """
    一个三维数组:
    裹一张或多张"煎饼",是"煎饼最小包装单元"。
    形状比如为(1, 3, 2),这是一张"煎饼"作为一组装了一包。
    也可以是(5, 3, 2),五张"煎饼"作为一组装了一包。
    在"散装称重零售区"这样的包装其实已经可以卖了,人手不能直接接触"煎饼",卫生不成问题。
    关于维度增加:
    五张煎饼,不管是一层压一层平着放,还是一层贴一层竖着放,都不可能在二维平面内实现,只能升维,于是到了三维。
    摞的方式涉及"行优先存储"和"列优先存储",我们暂且不管(Python 默认"行优先存储")。
    或者这样理解,五张煎饼当作一个整体处理,必然包在一层包裹里,这个"煎饼最小包装单元",就是个三维数组。
    有人抬扛说没用包裹,左手两根手指捏着让五张煎饼成为一个整体的,右手同样这么干,这不也可以区分为"两件"售卖单元?
    那你这左右手两根手指的"压力"也算一层包裹,不然怎么可能成为一个整体的?
    """
    """
    一个四维数组:
    常见"超市销售包"。
    在"煎饼最小包装单元"外面又套个包装,装一个或多个"煎饼最小包装单元"。
    到四维数组,生活中比较常见了,超市里卖的食品很多都这样包装:一个外包装装几个小袋,每个小袋又装了一片或几片吃的。
    这样的一个四维数组可称"超市销售包"。
    形状类似:(1, 5, 3, 2),从里往外说,五张"煎饼"作为一组装在最内层包装袋里,这样的一个小包装外边又有层包装。
    这么装有点浪费最外层包装袋哈,还容易被说成"过度包装"。
    调整下,可装成(6, 5, 3, 2),一个最外层包装袋装了六个小包装,每个小包装有五张"煎饼",总共三十张"煎饼",这样才是个像样的"超市销售包"。
    超市里有很多这样的包装,零散存在(没装在固定外包装中),可写作:n个(6, 5, 3, 2),其中,n 大于等于 1 ,n 属于整数集。
    注意这个"n"是在形状元组(6, 5, 3, 2)外边的,虽然这"n"个家伙长得都一样,但并不是一组,零散存在,没有被约束。
    超市老板查库存的时候,想看余货几件,这里"几"对应于"n"。
    """
    """
    一个五维数组:
    超市进货的时候,可能用"大批发包"装多个"超市销售包",这样方便装卸啊,卸车时雇人拆开最外层包装再上货架单卖。
    多了层包裹,五维了。
    如果一个"大批发包"装十个"超市销售包",可写作:(10, 6, 5, 3, 2)。
    这个五维数组,我们从外到内说:
    axis=0 这个维度(拆开最外一层看到的)的形状为 10 ,最外层包装被拆开扔掉后,得到 10 个小包装。
    axis=1 这个维度形状为 6 ,意思是如果把上述 10 个小包装拿出任何一个来,把它的外包装除掉,又剥出 6 个小包装。
    axis=2 形状为 5 ,意思是把上一步得到的 6 个小包装拿出任何一个来,把它的外包装除掉,,里边是 5 个元素。这里说"元素"没再说"小包装"是因为 5 后边已经是三行两列的二维数组了(具体到单张"煎饼"了),没有小包装袋了。
    """
    """
    一个六维数组:
    不写了,反正就是再套个袋子,装一个或多个五维数组,类似:(3, 10, 6, 5, 3, 2),这是一个六维数组装了三个五维数组。
    其他更高维数组,你就再一层一层套袋子就是了。
    """
    """
    移除数组中长度为1的维度:
    有些书上会提到移除数组中长度为 1 的维度的动作 np.squeeze() ,如:
    """
    arr = np.array([[[1], [2]]])
    print(arr)
    print(arr.shape)
    """
    [[[1]
      [2]]]
    (1, 2, 1)
    """
    squeezed = np.squeeze(arr)
    print(squeezed)
    print(squeezed.shape)
    """
    [1 2]
    (2,)
    """
    """
    原数组为三维数组。
    怎么看?
    → [[[ ←1], [2]]]
    三个"[",一眼瞧出来是三维数组。
    处理后变成一维数组。
    啥意思?
    类比月饼过度包装。
    外边一个"大硬壳",打开,一个"小软盒",再打开,又一个"小布盒",再打开,又一个"小包装",再撕开,好嘛,您猜怎么着?
    就两个分别用"塑料纸"包着的小月饼。
    这个结构可以写成这样的形状元组:(1, 1, 1, 1, 1, 2, 3)。
    从里往外看:
    (2, 3):用两行三列的二维数组表示一个"月饼",裸 lu 着的,不带包装的,张嘴可咬。
    (1, 2, 3):"最小包装单元",一个"月饼"作为一组用一张"塑料纸"包起来,可以"散装称重零售"了。
    (1, 1, 2, 3):"超市销售包",一个"小包装",只包了一个用"塑料纸"包起来的月饼。
    (1, 1, 1, 2, 3):"小布盒"。
    (1, 1, 1, 1, 2, 3):"小软盒"。
    (1, 1, 1, 1, 1, 2, 3):"大硬壳"。
    所谓移除数组中长度为 1 的维度,就是去除过度包装。
    一块"月饼",外边包一层"塑料纸"就能防止直接用手拿了,没必要里三层外三层包上二百个"塑料袋"。
    """
    arr = np.zeros((1, 1, 1, 1, 1, 2, 3))
    squeezed = np.squeeze(arr)
    print(squeezed.shape)
    """
    (2, 3)
    """
    """
    看吧,numpy 更节省,认为连"塑料纸"都不用,直接剥到了"月饼"本身(二维数组),就是拿起来就能吃,一点包装都没有。
    不谈"月饼",回归纯数组模型,numpy 认为只用这个二维数组就可以表示原数组想表达的数据特征了,没必要一层包一层又一层。
    回到"月饼",正常剥到"超市销售包"就可以了:(6, 1, 2, 3)。
    一个"月饼"作为一组装在最里边小包装里,六个这样的小包装再用外包装包起来卖。
    或者还可以这样精简:
    把最外层包装拆除,一个"月饼"包一张"塑料纸","散装称重零售":(1, 2, 3)。
    或者把数组重组一下,把一个"月饼"外边包的一张"塑料纸"也拆掉,直接手触"月饼"了对吧,三个"月饼"装到一个"塑料袋"里:(3, 2, 3),再"散装称重零售"。
    折腾这个干啥?销售心理学啊,老百姓可能会觉得散装的便宜;一包多装点儿买得快。
    当然这可能又需要超市招聘拆包员和打包员,哈哈。
    回归数组模型,把原来所有元素提取出来,重新设置维度,表征不同特征,凸显不同权重,巴拉巴拉......
    """
# ~ npy1()

2 欢迎纠错

欢迎纠错,随时更新。

联系方式:评论、私信,或 企鹅 :179 0042 182 。

3 论文写作/Python 学习智能体

https://chatglm.cn/share/WF2C5ree


  • 以下关于 Markdown 编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

++ 新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法[1](#甘特图的mermaid语法1) 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

++ 功能快捷键

撤销:Ctrl/Command + Z

重做:Ctrl/Command + Y

加粗:Ctrl/Command + B

斜体:Ctrl/Command + I

标题:Ctrl/Command + Shift + H

无序列表:Ctrl/Command + Shift + U

有序列表:Ctrl/Command + Shift + O

检查列表:Ctrl/Command + Shift + C

插入代码:Ctrl/Command + Shift + K

插入链接:Ctrl/Command + Shift + L

插入图片:Ctrl/Command + Shift + G

查找:Ctrl/Command + F

替换:Ctrl/Command + G

++ 合理的创建标题,有助于目录的生成

直接输入1次+,并按下space后,将生成1级标题。

输入2次+,并按下space后,将生成2级标题。

以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

++ 如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

++ 插入链接与图片

链接: link.

图片:

带尺寸的图片:

居中的图片:

居中并且带尺寸的图片:

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

++ 如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

javascript 复制代码
// An highlighted block
var foo = 'bar';

++ 生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

++ 创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

+++ 设定内容居中、居左、居右

使用:---------:居中

使用:----------居左

使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

+++ SmartyPants

SmartyPants将ASCII标点字符转换为"智能"印刷标点HTML实体。例如:

TYPE ASCII
Single backticks 'Isn't this fun?' 'Isn't this fun?'
Quotes "Isn't this fun?" "Isn't this fun?"
Dashes -- is en-dash, --- is em-dash -- is en-dash, --- is em-dash

++ 创建一个自定义列表

Markdown

: Text-to- conversion tool
:
John
:
Luke

++ 如何创建一个注脚

一个具有注脚的文本。[2](#2)

++ 注释也是必不可少的

Markdown将文本转换为 。

++ KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

++ 新的甘特图功能,丰富你的文章
2014-01-07 2014-01-09 2014-01-11 2014-01-13 2014-01-15 2014-01-17 2014-01-19 2014-01-21 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid

  • 关于 甘特图 语法,参考 这儿,

++ UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:
链接 长方形 圆 圆角长方形 菱形

  • 关于 Mermaid 语法,参考 这儿,

++ FLowchart流程图

我们依旧会支持flowchart的流程图:
Created with Raphaël 2.3.0 开始 我的操作 确认? 结束 yes no

  • 关于 Flowchart流程图 语法,参考 这儿.

++ 导出与导入

+++ 导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

+++ 导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,

继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

*[HTML]: 超文本标记语言

相关推荐
秀儿还能再秀10 分钟前
基于Excel的数据分析思维与分析方法
数据分析·excel
weixin_4723394612 分钟前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
枯萎穿心攻击1 小时前
响应式编程入门教程第二节:构建 ObservableProperty<T> — 封装 ReactiveProperty 的高级用法
开发语言·unity·c#·游戏引擎
子燕若水2 小时前
Unreal Engine 5中的AI知识
人工智能
Eiceblue2 小时前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net
极限实验室3 小时前
Coco AI 实战(一):Coco Server Linux 平台部署
人工智能
m0_555762903 小时前
Matlab 频谱分析 (Spectral Analysis)
开发语言·matlab
杨过过儿3 小时前
【学习笔记】4.1 什么是 LLM
人工智能
巴伦是只猫3 小时前
【机器学习笔记Ⅰ】13 正则化代价函数
人工智能·笔记·机器学习
大千AI助手3 小时前
DTW模版匹配:弹性对齐的时间序列相似度度量算法
人工智能·算法·机器学习·数据挖掘·模版匹配·dtw模版匹配