1. reshape

reshape 后的数组,仅仅是原来数组的视图 view ,并没有发生复制元素的行为,这样才能保证 reshape 操作更为高效。

In [1]: import numpy as npIn [2]: a = np.arange(10)In [3]: a
Out[3]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])In [4]: b = a.reshape(2,5)In [5]: b
Out[5]:
array([[0, 1, 2, 3, 4],[5, 6, 7, 8, 9]])In [6]: a[0] = 10In [7]: a
Out[7]: array([10,  1,  2,  3,  4,  5,  6,  7,  8,  9])In [8]: b
Out[8]:
array([[10,  1,  2,  3,  4],[ 5,  6,  7,  8,  9]])In [9]:

可以看出,在经过 reshape 操作之后,改变 a 中的第一个元素, b 也会跟着改变。

2. 元素级操作

NumPy 中两个数组加减乘除等,默认都是对应元素的操作:

In [9]: a = np.arange(5)In [10]: a
Out[10]: array([0, 1, 2, 3, 4])In [11]: a+2
Out[11]: array([2, 3, 4, 5, 6])In [12]:

执行 a+2 之后 a 中的每个元素都被加 2。

In [12]: a
Out[12]: array([0, 1, 2, 3, 4])In [13]: a * a
Out[13]: array([ 0,  1,  4,  9, 16])In [14]:

执行 a * a 时,注意是按照元素逐个相乘。

3. 矩阵运算

线性代数中,矩阵的乘法操作在 NumPy 中实现有两种方法:

  • 使用 dot 函数;
  • 转化为 matrix 对象。

使用 dot 函数

In [14]: a
Out[14]: array([0, 1, 2, 3, 4])In [15]: b = np.random.randint(1, 10, (5,2))In [16]: b
Out[16]:
array([[7, 5],[8, 9],[2, 4],[5, 9],[3, 2]])In [17]: np.dot(a, b)
Out[17]: array([39, 52])In [18]:

另一种方法,将 a 和 b 分别转化为 matrix 对象:

In [18]: np.matrix(a) * np.matrix(b)
Out[18]: matrix([[39, 52]])In [19]:

因为 a 是一个 15 维的数组,而 b 是一个 52 维的数组,所以得出的结果是个 1*2 的数组。

4. 统计变量

4.1 求平均值

In [22]: m = np.arange(5)In [23]: m
Out[23]: array([0, 1, 2, 3, 4])In [24]: m.mean()
Out[24]: 2.0In [25]: m.sum()
Out[25]: 10In [26]:

若想求某一维度的平均值,设置 axis 参数,求 axis 等于 1 的平均值:

In [28]: m =np.random.randint(1, 10,(2,5))In [29]: m
Out[29]:
array([[4, 6, 8, 9, 8],[6, 9, 6, 6, 9]])In [30]: m.mean(axis=1)
Out[30]: array([7. , 7.2])In [31]: (4+6+8+9+8)/5.0
Out[31]: 7.0In [32]: (6+9+6+6+9)/5.0
Out[32]: 7.2In [33]:

4.2 求标准差

如下,分别求所有元素的标准差、某一维度上的标准差:

In [35]: m.std()
Out[35]: 1.6401219466856725In [36]: m.std(axis=1)
Out[36]: array([1.78885438, 1.46969385])In [37]:

4.3 求方差

如下,分别求所有元素的方差、某一维度上的方差:

In [38]: m.var()
Out[38]: 2.69In [39]: m.var(axis=1)
Out[39]: array([3.2 , 2.16])In [40]:

4.4 求最大值

如下,分别求所有元素的最大值、某一维度上的最大值:

In [40]: m.max()
Out[40]: 9In [41]: m.max(axis=1)
Out[41]: array([9, 9])In [42]:

4.5 求最小值

如下,分别求所有元素的最小值、某一维度上的最小值:

In [42]: m.min()
Out[42]: 4In [43]: m.min(axis=1)
Out[43]: array([4, 6])In [44]:

4.6 求和

如下,分别求所有维度上元素的和、某一维度上的元素和:

In [44]: m.sum()
Out[44]: 71In [45]: m.sum(axis=1)
Out[45]: array([35, 36])In [46]:

4.7 求累乘

如下,分别求所有维度上元素的累乘、某一维度上的累乘:

In [46]: m
Out[46]:
array([[4, 6, 8, 9, 8],[6, 9, 6, 6, 9]])In [47]: m.cumprod()
Out[47]:
array([        4,        24,       192,      1728,     13824,     82944,746496,   4478976,  26873856, 241864704], dtype=int32)In [48]: m.cumprod(axis=1)
Out[48]:
array([[    4,    24,   192,  1728, 13824],[    6,    54,   324,  1944, 17496]], dtype=int32)In [49]:

4.8 求累和

如下,分别求所有维度上元素的累加和、某一维度上的累加和:

In [49]: m
Out[49]:
array([[4, 6, 8, 9, 8],[6, 9, 6, 6, 9]])In [50]: m.cumsum()
Out[50]: array([ 4, 10, 18, 27, 35, 41, 50, 56, 62, 71], dtype=int32)In [51]: m.cumsum(axis=1)
Out[51]:
array([[ 4, 10, 18, 27, 35],[ 6, 15, 21, 27, 36]], dtype=int32)In [52]:

4.9 对角线上元素的和

In [54]: m = np.random.randint(1,10,(4,4))In [55]: m
Out[55]:
array([[6, 6, 4, 6],[8, 4, 9, 3],[8, 4, 3, 1],[2, 6, 6, 7]])In [56]: m.trace()
Out[56]: 20In [57]:

Numpy 统计变量(平均值、标准差、方差、最大、最小、和、乘积、对角线和)相关推荐

  1. 使用numpy和pandas计算平均值、方差、标准差

    使用numpy和pandas计算平均值.方差.标准差 numpy和pandas都可以实现计算平均值.方差.标准差.但numpy默认的是总体方差,pandas默认的样本方差,即分母是n-1,是总体的无偏 ...

  2. 【backtrader源码解析7】backtrader中mathsupport中计算平均值、方差和标准差的函数的分析(含金量挺低的)

    前面的几篇文章尝试通过优化backtrader几个时间处理函数来提高效率,使用cython能提高单个函数效率但是在整体中效率降低导致失败之后,我又尝试了使用numba来改进那几个时间处理函数,也失败了 ...

  3. 统计学习方法——均值、方差、标准差及协方差、协方差矩阵、相关系数

    一.几个基本概念:均值.方差.标准差 统计学里最基本的概念就是样本的均值.方差.标准差.首先,我们给定一个含有n个样本的集合,下面给出这些概念的公式描述: 均值:,(在概率论和统计学中,数学期望(me ...

  4. Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差

    7.11(统计:计算标准差)编程练习题5.45计算数字的标准差.本题-计算标准差,使用一个数组存储x的每个数.编写测试程序,提示用户输入10个数字,显示平均值和标准差 题目 题目描述与运行示例 破题 ...

  5. 计算数据的平均值、方差和标准差

    //计算数据的平均值.方差和标准差 #include <iostream> #include <math.h> using namespace std; class MeanV ...

  6. NumPy 统计方法

    https://docs.scipy.org/doc/numpy/reference/routines.statistics.html 排序统计 方法 描述 amin(a[, axis, out, k ...

  7. 白话Elasticsearch35-深入聚合数据分析之案例实战更多metrics用法:统计每种颜色电视最大最小价格

    文章目录 概述 官方指导 Metrics Aggregations Min Aggregation Max Aggregation Sum Aggregation 案例:统计每种颜色电视最大最小价格 ...

  8. r语言三倍标准差法去除异常值,再计算平均值标准差

    博主自己没能找到好的函数去除异常值,于是自己写好了一个简单实用的包.可以通过三倍标准差法删去每一行的异常值,然后计算出平均值标准差. 函数总共四个参数: file=  要计算的文件路径,在工作目录可以 ...

  9. 平均值和方差的递推公式以及python实现

    有时候在处理流式数据的时候,需要实时更新数据的统计值,如平均值和方差,如果通过传统求解方差或者平均值时,每到达一个新的数据就需要遍历来求解.在数据量比较少的时候,通过遍历和递推求解的时间消耗和空间消耗 ...

最新文章

  1. 2021年春季学期-信号与系统-第二次作业参考答案-第二小题
  2. 基于单片机的水壶自动加热系统_基于烟雾检测火灾自动报警系统
  3. python 对象_python面向对象
  4. 神奇的问题记录【SqlDataAdapter Fill DataSet】
  5. python全文检索引擎_Python中使用haystack实现django全文检索搜索引擎功能
  6. C#合成解析XML与JSON
  7. 模数转换实验中断方式c语言,DSP实验报告--模拟信号的AD+FFT变换
  8. ElasticSearch5.1 基本概念和配置
  9. 挖地雷_1996年分区联赛提高组之三_ssl1071_dfs
  10. Franka Emika机械臂快速入门教程
  11. html网页中加入音乐播放器,[HTML5]简单网页本地音乐播放器
  12. java更改图片小于32kb_echarts上传图表图片到Java 后台保存出来是空白图片?
  13. 程序员网站有哪些?(欢迎补充)
  14. 超过ChatGPT3达到ChatGPT4%90性能的小羊驼来了-Vicuna(校招社招必备,chatgpt风口来了赶紧学起来吧)
  15. Daily English(每日一句)
  16. 安卓手机root、修改文件权限、更改按键映射
  17. IPFS周报-95:你是如何探索IPFS生态的?官方正在调查
  18. Oracle Reports 6i培训教程 - 百度文库
  19. 微距昆虫摄影的常用技巧
  20. %公式在计算机中怎么使用,在Excel 2013公式中使用函数并移动和复制——想象力电脑应用...

热门文章

  1. Spring AOP + Redis解决重复提交的问题
  2. pytorch: Variable detach 与 detach_
  3. Java使用itext生成Pdf
  4. 使用汇编语言编写第一个程序
  5. Python分析离散心率信号(下)
  6. 嵌入式传感器是智能移动增长的关键
  7. 用小神经网络和光谱仪优化关键词识别
  8. 软件定义汽车:本质并行化的有效平台
  9. 用测试驱动开发状态机
  10. 蓝牙mesh网络技术的亮点