numpy中多维数组的轴(axis)
来源:互联网 发布:笔记本桌面激活windows 编辑:程序博客网 时间:2024/06/03 18:40
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]])
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
如果将三维数组的每一个二维看做一个平面(plane,X[0, :, :], X[1, :, :], X[2, :, :]),三维数组即是这些二维平面层叠(stacked)出来的结果。则(axis=0)表示全部平面上的对应位置,(axis=1),每一个平面的每一列,(axis=2),每一个平面的每一行。
考察多维数组的dot运算
numpy.dot(a, b, out=None)
- 1
For 2-D arrays it is equivalent to matrix multiplication,
两个二维数组的dot运算遵循矩阵乘法(其实一个二维一个一维也是矩阵乘法(
Ax ))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×p ,A 的每一行乘以B 的每一列;
>>> X.dot([1, 1])array([[7, 6], [4, 5], [2, 1]]) # X的最后一轴是每一个二维的行方向
- 1
- 2
- 3
- 4
- 5
此时如果我们想通过矩阵与向量(一维)内积的方式实现(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]])
- 1
- 2
- 3
- 4
我们再来看看如何实现多维数组求平均的动作(每一个二维平面对应位的平均):
>>> X = np.random.randint(0, 5, [3, 2, 2])>>> Xarray([[[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]])
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- numpy中多维数组的轴(axis)
- numpy中多维数组的轴(axis)
- numpy中多维数组的轴(axis)
- Numpy - 多维数组(上)
- numpy.ndarray 交换多维数组(矩阵)的行/列
- numpy多维数组的切片操作
- NumPy 创建多维数组
- numpy中axis的一些理解
- python numpy中axis的含义
- numpy中axis理解
- numpy中axis
- 对Numpy数组按axis运算的理解
- numpy基本用法多维数组
- numpy tricks(一)—— 多维数组的阈值化处理
- numpy tricks(二)—— 删除多维数组的行或列
- 使用numexpr加快多维数组numpy的算术运算
- 【NumPy学习指南】day4 多维数组的切片和索引
- Chapter4-1 NumPy的ndarray:一种多维数组对象
- 【备忘】基于Hadoop,Spark大数据技术的推荐系统算法实战教程
- 宏汇编MACRO
- [Linux]FTP/VSFTP/配置文件/本地匿名虚拟用户访问/ftp客户端使用
- SMO算法剖析
- three.js 04-08 之 ShaderMaterial 材质
- numpy中多维数组的轴(axis)
- 组合索引
- 【记录】尝试分析Buildroot在make menuconfig后make时的内部执行逻辑
- HDU1212 Big Number【大数+模除】
- pgpool standby node status
- Part Itemtype解读(4): Event的响应机制设定
- 两个变量交换的几种方法
- http get和post请求的区别
- R语言