文章目录

  • 约减
  • 约减方向(垂直、水平)
  • 求和
  • 其他函数
  • 完整代码

约减

约减:表示将众多数据按照某种规则合并成一个或几个数据。
约减之后,数据的个数在总量上是减少的。
在这里,“约减”的“减”并非减法之意,而是元素的减少。比如说,数组的加法操作就是一种“约减”操作,因为它对众多元素按照加法指令实施操作,最后合并为少数的一个或几个值。示例代码如下。

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约减的轴的方向相关推荐

  1. TensorFlow中张量的约减(Reduce)方向

    张量的Reduce方向 对于多维张量而言, 约减的方向是一个需要明确的问题.在TensorFlow中, 提供了很多关于约减的函数, 如tf.reduce_sum, tf.reduce_mean, tf ...

  2. flex 布局下侧轴的方向

    这是个很有意思的问题,我一开始对于主轴和侧轴的理解是类似于x轴,y轴:他们一定是互相垂直,且侧轴应该在主轴顺时针90度的位置. 就好比canvas的x轴,y轴坐标一样,但事实却不是这样. 主轴的方向可 ...

  3. 机器学习:维数约减算法PCA(主成分分析法)原理、实现与应用

    文章目录 算法目标 预处理 算法过程 逆过程 主成分数kkk的选取 应用 算法目标 PCA的目标就是实现维数约减,即在尽可能保留信息的同时减少数据的维度.通过维数约减,我们可以实现数据压缩节省存储空间 ...

  4. Coursera机器学习(Andrew Ng)笔记:无监督学习与维度约减

    无监督学习与维度约减 机器学习初学者,原本是写来自己看的,写的比较随意.难免有错误,还请大家批评指正!对其中不清楚的地方可以留言,我会及时更正修改 Unsupervised learning & ...

  5. echarts中怎么把x轴文字方向设置为竖向

    1.调节坐标轴x轴文字为竖直方向 xAxis:{axisLabel: {color: '#333',// 让x轴文字方向为竖向interval: 0,formatter: function(value ...

  6. Matplotlib绘图中plt.xtricks()X轴文字方向设置方法

    1.plt.xtricks()函数详解参数介绍 def xticks(ticks: Union[ndarray, Iterable, int, float, None] = None,labels: ...

  7. numpy numpy.concatenate()函数

    @[TOC](numpy numpy.concatenate()函数)

  8. Numpy库中对axis(轴)的详解

    文章目录 前言 一.Numpy中asix是什么? 二.二维数组中axis的作用 二.多维数组中axis的作用 1.多维数组中元素按指定轴进行排序 2.多维数组按照axis指定的轴进行拼接 总结 前言 ...

  9. python转置_python数据分析类库系列Numpy之 数组转置和轴对换

    转置是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作).数组不仅有transpose方法,还有一个特殊的T属性 arr = np.arange(15).reshape((3, 5)) ...

最新文章

  1. KNN分类器、最近邻分类、KD树、KNN分类的最佳K值、基于半径的最近邻分类器、KNN多分类、KNN多标签分类、KNN多输出分类、KNN分类的优缺点
  2. [bzoj3489]A simple rmq problem
  3. oracle之数据处理之约束1
  4. tika设置文件长度限制_MySQLInnoDB某些你没注意过的限制
  5. 集合Collection总览
  6. 如何突破织梦后台发布文章的250字符的内容摘要字数限制
  7. 计算机软件跨考教育学优点,2021教育学考研优势院校分析之:华南师范大学
  8. 联想拯救者笔记本电脑亮度无法调节解决办法
  9. python any_python的any
  10. 华大单片机HC32L130J6TA入坑全纪录(二)——关于SWD下载的问题
  11. Duplicate Finder for Mac 1.4.3 重复文件查找和删除 破解版下载
  12. 黑鲨一代启动Android密码,黑鲨一代(BlackShark) 刷入TWRP 获取完美ROOT权限 刷机教程...
  13. 选择排序-简单选择排序
  14. Windows API详情
  15. 生活明朗,万物可爱,人间值得,未来可期
  16. 为让儿子从轮椅上站起来,工程师父亲打造外骨骼装置
  17. CVPR 2022 | 大连理工提出自校准照明框架,用于现实场景的微光图像增强
  18. 微信小程序监听实时地理位置变化事件接口申请
  19. 附近地点搜索解决方案之基于球面距离公式的算法
  20. 计算机软件工程专业的需要考什么证书?

热门文章

  1. office和python二级哪个更有用_ms office二级和一级区别
  2. Jmeter分布式压力测试
  3. 三菱fx2n做从站的modbus通讯_三菱FX2N与昆仑通态(MCGS)无线通讯例程
  4. 2020复旦计算机专硕考研复试经验
  5. Pyecharts简单使用 饼图和环形图
  6. 马云台大演讲:这世界观点很多 请坚持自己思考
  7. Word小技巧--多级列表设置
  8. 困扰我一周左右的semver
  9. 理解3ds max 中的衰减贴图
  10. EXCEL填充序列快捷键