python如何求一个矩阵里非nan数据的最大值_Python数据分析入门日记Day4 :科学技术库Numpy:基础统计分析与线代运算...

4a9d7a9908640c927782462eac676341.png

Python数据分析入门日记Day4

——Numpy中的基础统计分析与线代运算

贪玩的我去乌镇玩嗨了,导致今天的推文又迟到了,在此要跟大家说一声抱歉。外出回来学习一下Numpy中的一些统计函数和关于线性代数的运算。说到统计分析与线代运算,条件反射想到的无非是求和、乘除运算、均值、中位数、方差计算等等。先从简单的元素来看。

1、元素级别的计算

(1)定义一个新数组arr11,用arange()函数和reshape()函数创建1~12组成的4×3的矩阵。

733eb374b4b585da0a9ba7a4418797b7.png

(2)用**表示乘方,对arr11中的每个元素进行平方。计算结果如下:

4e86c2786db4468f57c0ddfb579059a6.png

(3)用np.sqrt()对arr11中的每个元素开根号求值。

ec29098cb1dbfedcb5204db4b6c7d645.png

发现出现了“nan”值,这是因为在arr11中有的元素是负值,负值不能开根。

(4)以e为底,arr11中的每个元素为指数,求值:

16920edd18e4516a1ec9a426f7709cfd.png

(5)求对数,用np.log()函数:

f82d1036cbe414c8779e5bd4114dfe0b.png

(6)利用np.abs()函数对arr11中的每个元素取绝对值:

7c2a15b87b93e78c8782f8af4d5785bd.png

2、统计运算函数

(1)np.sum()

利用np.sum()函数对数组中的元素进行求和。

d8fb0587ec0d6f884875701786406f97.png

若想要对数组中的每一列求和,在括号中加入参数axis=0,如果需要对行求和,那么将0改为1即可。

106aa2734c5c5cfd7b606865750e7c3f.png

(2)np.cumsum()

利用np.cumsum()累计和,注意:求数组arr11中元素的累计和的顺序是“从上到下,从左到右”,最终得到结果:

05d61ba4f8a7a5c4164ae021288e998b.png

同样,若想要对数组中的每一列求累计和,在括号中加入参数axis=0,如果需要对行求累计和,那么将0改为1即可。

e8a5ef5c4094ef20ef6f5fb7e27ca2d4.png

(3)np.cumprod()

函数np.cumprod()可以求数组中元素的累计积,用法如下:

7ba20708aa5753b18f0c50d0beb62037.png

如果想对行和列求累计积,和之前求累计和的方法一样,改变axis参数,大家可以自己试一试。

(4)np.min()和np.max()

很好理解,和R语言一样,在Numpy库中想要求得数组中的最小值和最大值,利用函数min()和max()。

3d2bcaa1255441814f8c25ce0692d96a.png

那么,想要求每一列的最值,还是改变参数axis参数,举个例子:

bf9619f060b17ac19023b888b0129f9f.png

(5)np.mean()

函数np.mean()用来求数组中元素的均值。

49f52252d2c2c0d1668f85ce06cc98fe.png

(6)np.median()

计算所用元素的中位数,用到函数np.median()。

84495bcc939300598e405073398545e7.png

(7)np.var()

学过计量和统计知识的同学一定知道方差就是var表示的,因此,这个函数很好理解,就是求元素的方差。

a4b1de2ff7c7e8fffb9074e5c4740aa7.png

(8)np.std()

该函数用来计算元素的标准差,也可以通过改变参数axis的方法来求每一行或每一列的标准差:

d2161901a3a1b0d9e5731fe85d4788f4.png

(9)where()

该函数相当于Excel中的if函数。用法如下:

a23f9666563af22adb3e2c9b931e0e55.png

相当于为每个值写了一个标签,如果在数组arr11中的元素是大于0的,输出为“postive”,否则就是“negtive”.

3、线性代数的运算

(1)重新生成一个数组arr13:

24eb44e72229e9cad2fd09f9ad60d35c.png

(2)linalg库

从Numpy中的linalg库中提取函数,可以对矩阵进行一系列计算。具体计算如下:

求行列式:

363f79837b477787c13f04ab26dac74e.png

求逆矩阵:

51d1ea091948a9c92230198930154b74.png

求迹:

3c9a5660590f70608a25a25145120d74.png

求特征向量:

e593af1fd6e6b980a2566b884e8634f1.png

奇异值分解:

14dac23100b70fac6fd35f152280690b.png

(3)np.dot()

np.dot()函数可以实现矩阵乘积运算,如果需要对两个arr13相乘,可以这样做:

93d5fe2526982428bdf40fd9990927f1.png

矩阵相乘时并不是随便两个矩阵就能够实现的,现在定义数组arr14为一个3×4的矩阵,数组arr15为一个4×3的矩阵,使得它们相乘,也就是说,第二个矩阵的行数必须和前一个矩阵的列数相同。结果如下:

b2c91c0319f41f8c05db9cb201961ddf.png

关于统计分析与线代运算的学习用到了很多之前学过的知识,如果有不懂的可以回顾一些学过的线代知识。感谢您关注Python数据分析日记Day4,我非常希望能和大家分享、交流、讨论,如果有什么问题或是建议,欢迎提出。

最后,跟大家分享几张昨日的乌镇美景,感谢摄影师薛同学,如果大家有意学习摄影,可以私信我或者在留言区交流一下哦!

Ovaltine

165ebf939c81f6b069d7af885ba44e21.png b36925b657328cf2f35de9119b5467da.png 3edd1651eae66f33bed7a073f58c522c.png bb95d34ee594f4034cd73215255e2f2a.png

摄影:薛亦诚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值