【NumPy】NumPy约减的轴的方向
文章目录
- 约减
- 约减方向(垂直、水平)
- 求和
- 其他函数
- 完整代码
约减
约减:表示将众多数据按照某种规则合并成一个或几个数据。
约减之后,数据的个数在总量上是减少的。
在这里,“约减”的“减”并非减法之意,而是元素的减少。比如说,数组的加法操作就是一种“约减”操作,因为它对众多元素按照加法指令实施操作,最后合并为少数的一个或几个值。示例代码如下。
import numpy as npa = np.ones((2, 3))
print("\narray:\n{}".format(a))
print("\na.sum:\n{}".format(a.sum()))
==============================================
array:
[[1. 1. 1.][1. 1. 1.]]a.sum:
6.0
约减方向(垂直、水平)
print("\n垂直方向约减:\n{}".format(a.sum(axis=0)))
print("\n水平方向约减:\n{}".format(a.sum(1)))
=========================================
垂直方向约减:
[2. 2. 2.]水平方向约减:
[3. 3.]
对于高维数组而言,“约减”也可以有先后顺序。因此,axis的值还可以是一个向量,比如说axis=[1, 0],表示先进行水平方向约减,再进行垂直方向约减。反之,axis=[0, 1]表示先进行垂直方向约减,再进行水平方向约减。如果没有指定方向,那么将采用默认值None,表示所有维度都会被依次“约减”
更加普适的解释,应该是按括号层次来理解。括号由外到内,对应从小到大的维数。比如,对于一个三维的数组[[[1, 1, 1], [2, 2, 2]], [[3, 3, 3],[4, 4,4]]],它有三层括号,其维度由外到内分别为[0,1,2]
求和
当我们指定sum()函数的axis=0时,就是在第0个维度的元素之间进行求和操作,即拆掉最外层括号后对应的两个元素([[1, 1, 1], [2, 2, 2]]和[[3, 3, 3], [4, 4,4]]),然后对同一个括号层次下的两个张量实施逐元素“约减”操作,其结果为[[4, 4, 4], [6, 6, 6]]。没有被“约减”的维度,其括号层次保持不变。
a = np.array([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]])
print("\narray:\n{}".format(a))
print("\na.sum(axis = 0):\n{}".format(a.sum(axis=0)))
================================================
array:
[[[1 1 1][2 2 2]][[3 3 3][4 4 4]]]a.sum(axis = 0):
[[4 4 4][6 6 6]]
类似地,当axis=1时,就是在第1个维度的元素之间进行求和操作,也就是拆掉中间层括号对应的元素[1, 1, 1], [2, 2, 2]和[3, 3, 3], [4, 4, 4]。需要注意的是,“约减”操作的实施对象为,原来在同一个括号层次内的对象,即[1, 1, 1]和[2,2, 2]相加,[3, 3, 3]和[4, 4, 4]相加。没有被“约减”的维度,其括号保持不变,结果得到[[3, 3, 3],[7, 7, 7]]。
print("\na.sum(axis = 1):\n{}".format(a.sum(axis=1)))
==================================================
a.sum(axis = 1):
[[3 3 3][7 7 7]]
类似地,当axis=2时,就是拆掉最内层括号,然后对最内层括号元素实施求和操作,即1+1+1=3,2+2+2=6,3+3+3=9,4+4+4=12。实施“约减”操作之后,该层括号消失,其他维度的括号保留。结果得到[[3,6], [9,12]]。
print("\na的维度:\n{}".format(a.ndim))
b = a.sum(axis=2)
print("\n在第二个维度上的约减:\n{}".format(b))
print("\nb的维度:\n{}".format(b.ndim))
===========================================
a的维度:
3在第二个维度上的约减:
[[ 3 6][ 9 12]]b的维度:
2
其他函数
其他可实施约减的函数,如max(最大值)、min(最小值)和mean(均值)等,其轴方向的约减也是类似的,示例代码如下。
a = np.linspace(1, 9, 9).reshape(3, 3)
print("\narray:\n{}".format(a))
print("\na.max(0): {}\na.max(1): {}\na.max(): {}".format(a.max(0), a.max(1), a.max()))
print("\na.mean(0): {}\na.mean(1): {}\na.mean(): {}".format(a.mean(0), a.mean(1), a.mean()))
==============================================
a.max(0): [7. 8. 9.]
a.max(1): [3. 6. 9.]
a.max(): 9.0a.mean(0): [4. 5. 6.]
a.mean(1): [2. 5. 8.]
a.mean(): 5.0
完整代码
import numpy as npa = np.ones((2, 3))
print("\narray:\n{}".format(a))
print("\na.sum:\n{}".format(a.sum()))print("\n垂直方向约减:\n{}".format(a.sum(axis=0)))
print("\n水平方向约减:\n{}".format(a.sum(1)))a = np.array([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]])
print("\narray:\n{}".format(a))
print("\na.sum(axis = 0):\n{}".format(a.sum(axis=0)))
print("\na.sum(axis = 1):\n{}".format(a.sum(axis=1)))print("\na的维度:\n{}".format(a.ndim))
b = a.sum(axis=2)
print("\n在第二个维度上的约减:\n{}".format(b))
print("\nb的维度:\n{}".format(b.ndim))a = np.linspace(1, 9, 9).reshape(3, 3)
print("\narray:\n{}".format(a))
print("\na.max(0): {}\na.max(1): {}\na.max(): {}".format(a.max(0), a.max(1), a.max()))
print("\na.mean(0): {}\na.mean(1): {}\na.mean(): {}".format(a.mean(0), a.mean(1), a.mean()))
【NumPy】NumPy约减的轴的方向相关推荐
- TensorFlow中张量的约减(Reduce)方向
张量的Reduce方向 对于多维张量而言, 约减的方向是一个需要明确的问题.在TensorFlow中, 提供了很多关于约减的函数, 如tf.reduce_sum, tf.reduce_mean, tf ...
- flex 布局下侧轴的方向
这是个很有意思的问题,我一开始对于主轴和侧轴的理解是类似于x轴,y轴:他们一定是互相垂直,且侧轴应该在主轴顺时针90度的位置. 就好比canvas的x轴,y轴坐标一样,但事实却不是这样. 主轴的方向可 ...
- 机器学习:维数约减算法PCA(主成分分析法)原理、实现与应用
文章目录 算法目标 预处理 算法过程 逆过程 主成分数kkk的选取 应用 算法目标 PCA的目标就是实现维数约减,即在尽可能保留信息的同时减少数据的维度.通过维数约减,我们可以实现数据压缩节省存储空间 ...
- Coursera机器学习(Andrew Ng)笔记:无监督学习与维度约减
无监督学习与维度约减 机器学习初学者,原本是写来自己看的,写的比较随意.难免有错误,还请大家批评指正!对其中不清楚的地方可以留言,我会及时更正修改 Unsupervised learning & ...
- echarts中怎么把x轴文字方向设置为竖向
1.调节坐标轴x轴文字为竖直方向 xAxis:{axisLabel: {color: '#333',// 让x轴文字方向为竖向interval: 0,formatter: function(value ...
- Matplotlib绘图中plt.xtricks()X轴文字方向设置方法
1.plt.xtricks()函数详解参数介绍 def xticks(ticks: Union[ndarray, Iterable, int, float, None] = None,labels: ...
- numpy numpy.concatenate()函数
@[TOC](numpy numpy.concatenate()函数)
- Numpy库中对axis(轴)的详解
文章目录 前言 一.Numpy中asix是什么? 二.二维数组中axis的作用 二.多维数组中axis的作用 1.多维数组中元素按指定轴进行排序 2.多维数组按照axis指定的轴进行拼接 总结 前言 ...
- python转置_python数据分析类库系列Numpy之 数组转置和轴对换
转置是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作).数组不仅有transpose方法,还有一个特殊的T属性 arr = np.arange(15).reshape((3, 5)) ...
最新文章
- KNN分类器、最近邻分类、KD树、KNN分类的最佳K值、基于半径的最近邻分类器、KNN多分类、KNN多标签分类、KNN多输出分类、KNN分类的优缺点
- [bzoj3489]A simple rmq problem
- oracle之数据处理之约束1
- tika设置文件长度限制_MySQLInnoDB某些你没注意过的限制
- 集合Collection总览
- 如何突破织梦后台发布文章的250字符的内容摘要字数限制
- 计算机软件跨考教育学优点,2021教育学考研优势院校分析之:华南师范大学
- 联想拯救者笔记本电脑亮度无法调节解决办法
- python any_python的any
- 华大单片机HC32L130J6TA入坑全纪录(二)——关于SWD下载的问题
- Duplicate Finder for Mac 1.4.3 重复文件查找和删除 破解版下载
- 黑鲨一代启动Android密码,黑鲨一代(BlackShark) 刷入TWRP 获取完美ROOT权限 刷机教程...
- 选择排序-简单选择排序
- Windows API详情
- 生活明朗,万物可爱,人间值得,未来可期
- 为让儿子从轮椅上站起来,工程师父亲打造外骨骼装置
- CVPR 2022 | 大连理工提出自校准照明框架,用于现实场景的微光图像增强
- 微信小程序监听实时地理位置变化事件接口申请
- 附近地点搜索解决方案之基于球面距离公式的算法
- 计算机软件工程专业的需要考什么证书?