多维数组的轴(axis=)是和该数组的size(或者shape)的元素是相对应的;

>>> np.random.seed(123)
>>> X = np.random.randint(0, 5, [3, 2, 2])
>>> print(X)[[[5 2][4 2]][[1 3][2 3]][[1 1][0 1]]]>>> X.sum(axis=0)
array([[7, 6],[6, 6]])>>> X.sum(axis=1)
array([[9, 4],[3, 6],[1, 2]])>>> X.sum(axis=2)
array([[7, 6],[4, 5],[2, 1]])

如果将三维数组的每一个二维看做一个平面(plane,X[0, :, :], X[1, :, :], X[2, :, :]),三维数组即是这些二维平面层叠(stacked)出来的结果。则(axis=0)表示全部平面上的对应位置,(axis=1),每一个平面的每一列,(axis=2),每一个平面的每一行。

考察多维数组的dot运算

numpy.dot(a, b, out=None)
  • For 2-D arrays it is equivalent to matrix multiplication,

    两个二维数组的dot运算遵循矩阵乘法(其实一个二维一个一维也是矩阵乘法(AxAx))

  • and for 1-D arrays to inner product of vectors (without complex conjugation).

    两个一维数组的dot运算执行的是内积运算(对应位相乘相加)

  • For N dimensions it is a sum product over the last axis of a and the second-to-last of b。

    dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
    a的最后一轴与b的倒数第二轴,(而 np.tensordot 可灵活地指定相互作用的两个矩阵的任意轴
    这不正是著名的 Am×n⋅Bn×pA_{m\times n}\cdot B_{n\times p},AA 的每一行乘以 BB的每一列;

>>> X.dot([1, 1])
array([[7, 6],[4, 5],[2, 1]])# X的最后一轴是每一个二维的行方向

此时如果我们想通过矩阵与向量(一维)内积的方式实现(np.sum(X, axis=0)的结果)需使用np.tensordots(X, [1, 1, 1], axes=([0], [0])),具体的用法见 np.tensordots文档。

>>> np.tensordots(X, [1, 1, 1], axes=([0], [0]))array([[7, 6],[6, 6]])

我们再来看看如何实现多维数组求平均的动作(每一个二维平面对应位的平均):

>>> X = np.random.randint(0, 5, [3, 2, 2])
>>> X
array([[[3, 4],[2, 2]],[[3, 4],[2, 3]],[[2, 1],[1, 3]]])>>> np.tensordot(X, [1/3, 1/3, 1/3], axes=([0], [0]))
array([[ 2.66666667,  3.        ],[ 1.66666667,  2.66666667]])

numpy中多维数组的轴(axis)相关推荐

  1. 一文弄懂Numpy中ndarray的维度(dimension)/轴数(axis/axes)问题

    Numpy库的核心是ndarray,实际上就是N维数组(N-dimensional array),关于这个数据对象的详细介绍,参考官方文档最为合适.有一点要注意的是,ndarray的内置方法只有30多 ...

  2. Numpy 笔记: 多维数组的切片(slicing)和索引(indexing)【转】

    目录 切片(slicing)操作 索引(indexing) 操作 最简单的情况 获取多个元素 切片和索引的同异 切片(slicing)操作 Numpy 中多维数组的切片操作与 Python 中 lis ...

  3. 图解数据分析(10) | Numpy - 与2维数组操作(数据科学家入门·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/33 本文地址:https://www.showmeai.tech/article-d ...

  4. python一维数组和二维数组_Python numpy实现二维数组和一维数组拼接的方法

    Python numpy实现二维数组和一维数组拼接的方法 撰写时间:2017.5.23 一维数组 1.numpy初始化一维数组 a = np.array([1,2,3]); print a.shape ...

  5. Numpy之N维数组-ndarray

    Numpy之N维数组-ndarray 1 ndarray的属性 数组属性反映了数组本身固有的信息. 属性名字 属性解释 ndarray.shape 数组维度的元组    [假如是8行5列的数组,将会返 ...

  6. Python numpy实现二维数组和一维数组拼接

    撰写时间:2017.5.23 一维数组 1.numpy初始化一维数组 a = np.array([1,2,3]); print a.shape 输出的值应该为(3,) 二维数组 2.numpy初始化二 ...

  7. python笔记之NUMPY中的掩码数组numpy.ma.mask

    python科学计算_numpy_线性代数/掩码数组/内存映射数组 1. 线性代数 numpy对于多维数组的运算在默认情况下并不使用矩阵运算,进行矩阵运算可以通过matrix对象或者矩阵函数来进行: ...

  8. python一维数组和二维数组,Python numpy实现二维数组和一维数组拼接的方法

    撰写时间:2017.5.23 一维数组 1.numpy初始化一维数组 a = np.array([1,2,3]); print a.shape 输出的值应该为(3,) 二维数组 2.numpy初始化二 ...

  9. NumPy 创建多维数组

    NumPy 创建多维数组 arange 函数创建的数组作为列表元素,把这个列表作为参数传给 array 函数,从而创建了一个 2 × 2 的数组,而且没有出现任何报错信息. Example 1 #!/ ...

最新文章

  1. 2022-2028年中国自动驾驶系统行业现状调研分析报告
  2. 探访2019世界人工智能大会:AI应让人类生活得更幸福
  3. ActiveMQ搭建
  4. python enumerate用法_【Python】python enumerate用法总结
  5. 将Spring Boot应用程序与Amazon Cognito集成
  6. C++ 常用排序算法
  7. 还是畅通工程(思想+代码)
  8. 【不了解你就OUT了】云原生基本原则
  9. Java网络编程详解
  10. 2017年全国大学生电子设计竞赛获奖名单
  11. webpack打包时提示:The following entrypoint(s) combined asset size exceeds the recommended limit
  12. switch判断语句用法
  13. incsgo 可直接取回最好的国内CSGO饰品皮肤开箱网站
  14. 编程入门先学哪种语言好
  15. 文科生学python_一个文科生的python心路历程
  16. 制药业CRM如何“对症下药”?
  17. 【Leetcode单调队列】- 洛谷P1714切蛋糕
  18. 腾讯云服务器使用密码账号SSH登录
  19. 博弈论书籍及信奥中的数学之博弈论
  20. 有维修痕迹的新手机--三星手机S5200C的无言之旅

热门文章

  1. reduceByKey与GroupByKey,为什么尽量少用GroupByKey
  2. 简单又帅气的折纸机器人教程_帅气折纸机器人的详细折叠教程
  3. lg-1 x 怎么算_四六级分数怎么算?交白卷都不会得0分|巨微英语
  4. python3.6中内置函数变化
  5. 海思3519A上运行yolov3(二)——Linux和Windows开发环境和运行环境搭建
  6. 概率论概念及机器学习中样本相似性度量之马氏距离
  7. Qt中Q_OBJECT与生成的moc文件的作用
  8. C++设计模式之Template Method(模板方法模式)
  9. c++多线程——基于锁和条件变量的前程安全队列
  10. CSS 笔记之 CSS 选择器