numpy中多维数组的轴(axis)
多维数组的轴(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)相关推荐
- 一文弄懂Numpy中ndarray的维度(dimension)/轴数(axis/axes)问题
Numpy库的核心是ndarray,实际上就是N维数组(N-dimensional array),关于这个数据对象的详细介绍,参考官方文档最为合适.有一点要注意的是,ndarray的内置方法只有30多 ...
- Numpy 笔记: 多维数组的切片(slicing)和索引(indexing)【转】
目录 切片(slicing)操作 索引(indexing) 操作 最简单的情况 获取多个元素 切片和索引的同异 切片(slicing)操作 Numpy 中多维数组的切片操作与 Python 中 lis ...
- 图解数据分析(10) | Numpy - 与2维数组操作(数据科学家入门·完结)
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/33 本文地址:https://www.showmeai.tech/article-d ...
- python一维数组和二维数组_Python numpy实现二维数组和一维数组拼接的方法
Python numpy实现二维数组和一维数组拼接的方法 撰写时间:2017.5.23 一维数组 1.numpy初始化一维数组 a = np.array([1,2,3]); print a.shape ...
- Numpy之N维数组-ndarray
Numpy之N维数组-ndarray 1 ndarray的属性 数组属性反映了数组本身固有的信息. 属性名字 属性解释 ndarray.shape 数组维度的元组 [假如是8行5列的数组,将会返 ...
- Python numpy实现二维数组和一维数组拼接
撰写时间:2017.5.23 一维数组 1.numpy初始化一维数组 a = np.array([1,2,3]); print a.shape 输出的值应该为(3,) 二维数组 2.numpy初始化二 ...
- python笔记之NUMPY中的掩码数组numpy.ma.mask
python科学计算_numpy_线性代数/掩码数组/内存映射数组 1. 线性代数 numpy对于多维数组的运算在默认情况下并不使用矩阵运算,进行矩阵运算可以通过matrix对象或者矩阵函数来进行: ...
- python一维数组和二维数组,Python numpy实现二维数组和一维数组拼接的方法
撰写时间:2017.5.23 一维数组 1.numpy初始化一维数组 a = np.array([1,2,3]); print a.shape 输出的值应该为(3,) 二维数组 2.numpy初始化二 ...
- NumPy 创建多维数组
NumPy 创建多维数组 arange 函数创建的数组作为列表元素,把这个列表作为参数传给 array 函数,从而创建了一个 2 × 2 的数组,而且没有出现任何报错信息. Example 1 #!/ ...
最新文章
- 2022-2028年中国自动驾驶系统行业现状调研分析报告
- 探访2019世界人工智能大会:AI应让人类生活得更幸福
- ActiveMQ搭建
- python enumerate用法_【Python】python enumerate用法总结
- 将Spring Boot应用程序与Amazon Cognito集成
- C++ 常用排序算法
- 还是畅通工程(思想+代码)
- 【不了解你就OUT了】云原生基本原则
- Java网络编程详解
- 2017年全国大学生电子设计竞赛获奖名单
- webpack打包时提示:The following entrypoint(s) combined asset size exceeds the recommended limit
- switch判断语句用法
- incsgo 可直接取回最好的国内CSGO饰品皮肤开箱网站
- 编程入门先学哪种语言好
- 文科生学python_一个文科生的python心路历程
- 制药业CRM如何“对症下药”?
- 【Leetcode单调队列】- 洛谷P1714切蛋糕
- 腾讯云服务器使用密码账号SSH登录
- 博弈论书籍及信奥中的数学之博弈论
- 有维修痕迹的新手机--三星手机S5200C的无言之旅
热门文章
- reduceByKey与GroupByKey,为什么尽量少用GroupByKey
- 简单又帅气的折纸机器人教程_帅气折纸机器人的详细折叠教程
- lg-1 x 怎么算_四六级分数怎么算?交白卷都不会得0分|巨微英语
- python3.6中内置函数变化
- 海思3519A上运行yolov3(二)——Linux和Windows开发环境和运行环境搭建
- 概率论概念及机器学习中样本相似性度量之马氏距离
- Qt中Q_OBJECT与生成的moc文件的作用
- C++设计模式之Template Method(模板方法模式)
- c++多线程——基于锁和条件变量的前程安全队列
- CSS 笔记之 CSS 选择器