Python中numpy模块功能整理(下):矩阵的运算、重构、排序、广播性质、过滤、Pandas转换

一、模块准备:

import numpy as np

二、矩阵运算:

  # 矩阵准备

a=np.array([[1,2],
           [3,4]])
b=np.array([[5,6],
          [7,8]])

1、矩阵的加法运算:两矩阵对应元素相加

#方法1
a+b
#方法2
np.add(a,b)

  结果:

  

2、矩阵的减法运算:两矩阵对应元素相减

#方法1
a-b
#方法2
np.subtract(a,b)

  结果:

  

3、面向元素的乘法运算:两矩阵对应元素相乘

#方法1
a*b
#方法2
np.multiply(a,b)

  结果:  

  

4、面向元素的矩阵除法运算:两矩阵对应元素相除

#方法1
a/b
#方法2
np.divide(a,b)

  结果:

  

5、面向矩阵的乘法运算:两矩阵相乘

#面向矩阵的乘法运算要求两矩阵1的行与矩阵2的列数相同,因此矩阵b需重新定义
a=np.array([[1,2],
           [3,4]])
b=np.array([[1,2,3],
           [4,5,6]])
#矩阵相乘
a.dot(b)

  结果:

  

6、矩阵所有元素开根号:

np.sqrt(a)

  结果:

  

7、矩阵所有元素求和:

np.sum(a)

  结果:

  

8、矩阵所有行的个元素分别求和:

np.sum(a,axis=1)

  结果:

  

9、矩阵所有列的元素分别求和:

np.sum(a,axis=0)

  结果:

  

10、矩阵的所有元素求平均值:

np.mean(a)

  结果:

  

11、矩阵的所有行分别求元素的平均值:

np.mean(a,axis=1)

  结果:

  

12、矩阵的所有列分别求元素的平均值:

np.mean(a,axis=0)

  结果:

  

13、矩阵的转置:

a=np.array([[0,2,1,3],
          [2,3,0,1]])
#方法1
a.T
#方法2
np.transpose(a)

  结果:

  

14、生成随机数:

#生成1到100的随机数(小数)
np.random.uniform(1,100)

  结果:

  

二、矩阵的重构:

     对矩阵进行重复构造:将其当作一个元素重复指定的次数 :

  例1:

np.tile(a,(1,2))#行重复1次,列重复2次

  例2:

np.tile(a,(2,2))#行重复2次,列重复2次

  结果1:                                                  结果2:

               

三、矩阵的排序:

  # 矩阵准备:

d=np.array([[ 6,  5,  2],
       [ 6,  18,  9],
       [ 9, 11, 3],
       [12, 33, 15]])

1、对每行的元素进行排序,输出结果索引

d.argsort()

  结果:

  

2、对每列的元素进行排序,输出结果索引

d.argsort(axis=0)

  结果:

  

3、对每行的元素进行排序,直接改变内部矩阵结果:

d.sort()

  结果:

  

4、对每列的元素进行排序,直接改变内部矩阵结果:

d.sort(axis=0)

  结果:

  

四、numpy中矩阵的广播性质:

   现有两矩阵:

a=np.array([[1,2,3],
           [4,5,6],
           [7,8,9],
           [10,11,12]])
b=np.array([2,3,3])

    需求:要求矩阵a的每一行与b相加。

方法1,循环实现,Python的for循环性能较差,不建议。

for i in range(4):
    a[i,:]+=b

方法2,借助numpy的重构函数实现,原理还是矩阵的相加。

a+np.tile(b,(4,1))

方法3,运用numpy中矩阵的广播性质: 当一个二维矩阵与一个单维矩阵相加时,默认多为矩阵的每一行(列)与单维矩阵相加。

a+b

  结果:

五、矩阵的过滤

  # 矩阵准备:

a=np.array([[ 1, 32,  3,  4],
       [ 5, 36,  7,  8],
       [ 9, 40, 11, 12]])

  需求,过滤出矩阵中大于10的数字

1、构造布尔矩阵:

result_index=a>10

   结果:

  

2、将原矩阵于布尔矩阵对应元素相乘:

e=a*result_index

  结果:

  

六、将Pandas中的DataFrame类型数据转换为numpy中的array类型矩阵

1、模块准备:

import numpy as np
import pandas as pd

2、数据准备:

df=pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]})

  结果:

  

3、转换方法:

#方法1
a=df.values
#方法2
a=np.array(df)
#方法3,不推荐
df.as_matrix()

   结果:

  

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值