zoukankan      html  css  js  c++  java
  • numpy多维数组理解

    转载https://blog.csdn.net/nianzu_ethan_zheng/article/details/79038212

    Numpy高维数据的理解

    当实际处理多维变量时,尤其需要使用到Tensorflow这样深度学习库,比如,图片数据批次其形状为:N×H×W×C, 高维序列格式存在难以理解的问题。因此如何读懂这些高维序列是一个很基础的问题。

    列表和1-D Numpy array

    这里写图片描述
    如何检索一个列表中的元素,上图给出了很好的描述

    嵌套列表和2-D Numpy序列

    当嵌套两个List事情就变得很有趣了。2-D表示:矩阵、数据库里的表格、灰度图像

    这里写图片描述
    上面是一个List里面嵌套了三个List,每个List都表示长方形表中的一个行向量

    在Python中访问一个嵌套列表,通常使用两个方括号,具体如下:
    这里写图片描述

    下面是一些小例子:
    这里写图片描述

    我们将嵌套结构看做一棵树
    这里写图片描述

    2-D numpy arrays

    V=np.array([[1, 0, 0],[0,1, 0],[0,0,1]])
    • 1

    2-D Numpy arrays 的加法运算

    X=np.array([[1,0],[0,1]])
    Y=np.array([[2,1][1,2]])
    Z=X+Y;
    Z:array([[3,1],[1,3]])
    • 1
    • 2
    • 3
    • 4

    这里写图片描述

    2-D Numpy arrays 的乘法运算

    X=np.array([[1,0],[0,1]])
    Y=np.array([[2,1][1,2]])
    Z=X*Y;
    Z:array([[2,0],[2,0]])
    • 1
    • 2
    • 3
    • 4

    这里写图片描述

    嵌套三个列表和3-DNumpys arrays

    可以看到相比于2-D列表,3-DNumpys arrays增加了一个方括号
    这里写图片描述

    我们可以这样检索其中一个元素。
    这里写图片描述

    为了生活化场景,基本的二维表格形状不变,而增加了相应的多个表格,类似于地址- 楼层- 房间号的表达方式
    这里写图片描述

    而检索过程也类似于这样过程
    这里写图片描述

    nDNumpy序列的加法表达是这样:
    这里写图片描述

    4DNumpy

    这里写图片描述

    这里写图片描述

    思考一下:
    1. 如何表达如下矩阵Tensor?
    1×2×2×1
    3×3×1×1
    3×3×2×1
    3×3×2×2

    给出答案:

    [[[[1],[1]],
       [[1],[1]]]]
    
    [[[[1]],[[1]],[[1]]],
     [[[1]],[[1]],[[1]]],
     [[[1]],[[1]],[[1]]]]
    
    [[[[1],[1]],[[1],[1]],[[1],[1]]],
     [[[1],[1]],[[1],[1]],[[1],[1]]],
     [[[1],[1]],[[1],[1]],[[1],[1]]]]
    
    [[[[1,1],[1,1]],[[1,1],[1,1]],[[1,1],[1,1]]],
     [[[1,1],[1,1]],[[1,1],[1,1]],[[1,1],[1,1]]],
     [[[1,1],[1,1]],[[1,1],[1,1]],[[1,1],[1,1]]]] 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在原文章中,表达较为清晰,适合新手入门。
    Reference:From Python Nested Lists to Multidimensional numpy Arrays

  • 相关阅读:
    java 集合排序
    java传值和传址
    Dom4j操作xml
    JAXP操作xml
    乐观锁和悲观锁【转】
    java IO【转】
    java 可变参数
    Eclipse调试Java的10个技巧【转】
    编译JDK源代码【转】
    Access restriction: The method typeNameToClass(String) from the type ObjectHandler is not accessible due to restriction on required library
  • 原文地址:https://www.cnblogs.com/yqxg/p/10582215.html
Copyright © 2011-2022 走看看