Numpy中的矩阵运算+聚合操作+arg运算(2019.1.17
2019-01-19 本文已影响0人
MMatx
Numpy中的矩阵运算
1.矩阵与数值之间的运算,矩阵与数值之间的算术运算,是矩阵里面的元素与数值进行运算
image.png
image.png
image.png
2.矩阵之间的运算
image.pngimage.png
image.png
numpy.linalg模块包含线性代数的函数。使用这个模块,可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等。
Numpy中的聚合操作
Numpy中的聚合操作包括一下
(1)求和
#一维
a=numpy.arange(10)
numpy.sum(a)
a.sum() #面向对象写法
#二维
x=numpy.arange(20).reshape(4,5)
numpy.sum(x) # 求所有元素之和
x.sum() # 求所有元素之和
np.sum(X,axis=0) # 求每一列的和 将要被压缩的维度
np.sum(X,axis=1) # 列被压缩,显示每一行的和
(2)最大最小值
numpy.max(x)
numpy.min(x)
(3)所有元素的乘积
numpy.prod(x)# 所有元素的乘积
(4)平均值,中位数,求第几分位的数值,方差,标准差
numpy.mean(x) #平均值
numpy.median(x) #中位数
numpy.percentile(x,q=75) #求第75%分位的数,数值从小到大排序
numpy.var(x) # 方差
numpy.std(x) #标准差
Numpy中的arg运算
numpy中的arg都是与索引有关的
import numpy
x = numpy.random.normal(0,1,100000) # 正态分布 均值 方差 数据个数
arg1=numpy.argmax(x) # 返回列表中最大值所在的索引
arg2=numpy.argmin(x) # 返回列表中最小值所在的索引
a=numpy.arange(16)
numpy.random.shuffle(a) # 对a进行乱序操作
numpy.sort(a) #对a进行排序
二维
X = numpy.random.randint(10,size=(4,4))
numpy.sort(X)
numpy.argsort(x) # 返回索引值 从大到小排序之后,数值的索引值 返回排序后的索引
#带arg的都是索引
numpy.partition(x,3) # 标定点
numpy.argpartition(x,3)
Numpy中的比较和fancy_indexing
1、利用列表代表索引访问列表或者是矩阵
2、布尔索引,代表这个此元素是否访问
3、列表/矩阵进行逻辑运算可以返回每个元素是否满足此条件的状态,若是true则为满足,若为false则是不满足
4、可以利用布尔索引去筛选值
#!/usr/bin/env python
# coding: utf-8
# # Numpy中的比较和fancy_indexing
import numpy as np
x = np.arange(16)
x[3:9:2]
# 要返回2 5 8 位置的元素
[x[2],x[5],x[8]]
ind = [3,5,8]
x[ind]
ind = np.array([[0,2],[1,3]])
x[ind]
X = x.reshape(4,-1)
row = np.array([0,1,2])
col = np.array([1,2,3])
X[row,col]
X[0,col]
X[:2,col]
# bool 索引
col = [True,False,True,True] # false 是不访问的数据
X[1:3,col]
x < 3
x > 3
x ==3
2 * x == 24-4*x
X < 6
np.sum(x<=3)
np.count_nonzero(x<=3)
np.any(x == 0)
np.any(x<0)
np.all(x>=0)
np.all(x>0)
np.sum(X%2 ==0)
np.sum(X%2==0,axis=0) # 看每一列有多少个偶数
np.sum(X%2==0,axis=1) # 看每一行有多少个偶数
np.sum(X>0,axis=1) # 看每一行有多少大于0的
np.all(X>0,axis=1)
np.sum((x>3)&(x<10))
np.sum((x%2==0)|(x>10))
x<5
x[x<5] # 利用布尔索引去筛选值
x[x%2==0]
X[X[:,3]%3==0,:]
X[:,3]