Numpy运算与排序 (2020-04-07)

1. 矩阵运算

1. 内积
>>> a = np.array([1,1])
>>> b = np.array([2,0])
>>> a.dot(a)
1^2+1^2 = 2
>>> a.dot(b)
1*2+1*0 = 2

2. 矩阵乘法,二维以上直接乘就是

2. 判断符运用

>>> a=np.array([1,2,3])
>>> a<0
array([False, False, False])

#筛选
>>> a=np.array([1,2,3])
>>> b=np.array([True,False,True])
>>> a[b]
array([1, 3])

>>> 条件筛选
array([[5, 0, 3],
       [3, 7, 9],
       [3, 5, 2]])

>>> a[a>5]
array([7, 9])
>>> a[a>5]
array([[False, False, False],
       [False,  True,  True],
       [False, False, False]])
>>> a[a%2==0]
array([0, 2])
>>> a+2>5
array([[ True, False, False],
       [False,  True,  True],
       [False,  True, False]])
>>> a+2>a*2
array([[False,  True, False],
       [False, False, False],
       [False, False, False]])
>>> a[a+2>a*2]
array([0])

3. 常用聚合函数

函数 说明
sum 对数组中全部或某轴向的元素。零长度的数组sum为0
mean 算数平均数。零长度的数组mean为nan
std、var 标准差、方差
min、max 最大值、最小值
argmin、argmax 最大和最小元素的索引
cumsum、cumprod 累计和、累计积
>>> np.random.seed(0)
>>> x = np.random.randint(10, size=(2,3))
array([[5, 0, 3],
       [3, 7, 9]])
>>> np.sum(x,axis=1)  #以一维数组内元素为单位进行操作
array([ 8, 19])
>>> np.sum(x,axis=1)  #以一维数组为单位操作
array([ 8,  7, 12])

4. 读取文件

import pandas as pd
grade=pd.read_csv(r"student_grade.txt",sep='\t')  #txt和csv均为pd.read_csv,源文件空格分隔
grade.head(6)    #显示6个

np.sum(grade['语文'])  #单个关键字列下聚合运算,默认axis = 0

5. 排序

原始数组:a = array([[4, 5, 0, 3, 3, 3, 1, 3, 5, 2]])

1. a.sort()  直接改变a
2. np.sort(a)  不直接改变a,默认升序
   降序写法:-np.sort(-a)  

3. 返回索引值的排序 np.argsort()
>>> np.random.seed(0)
>>> a = np.random.randn(3, 3) #标准正态
array([[ 1.76405235,  0.40015721,  0.97873798],
       [ 2.2408932 ,  1.86755799, -0.97727788],
       [ 0.95008842, -0.15135721, -0.10321885]])

>>> np.sort(a,axis = 0)   #按照第一个轴(列或者理解为一维数组为单位)进行排列
array([[ 0.95008842, -0.15135721, -0.97727788],
       [ 1.76405235,  0.40015721, -0.10321885],
       [ 2.2408932 ,  1.86755799,  0.97873798]])

>>> a.argsort(axis=0)    #也是排序,但显示的是其行索引,不改变源
array([[2, 2, 1],
       [0, 0, 2],
       [1, 1, 0]])

6. 唯一化与集合运算

方法 说明
np.unique(x) 计算x中的唯一元素,并返回有序结果。
np.intersect1d(x,y) 计算x和y的公共元素,并返回有序结果。
np.union1d(x,y) 计算x和y的并集,并返回有序结果。
np.in1d(x,y) 得到一个表示“x的元素是否包含于y”的布尔型数组。
np.setdiff1d(x,y) 集合的差,即元素在x中且不在y中。
np.setxor1d(x,y) 集合的对称性,即存在于一个数组中但不同时存在于两个数组中的元素。

6.1 唯一化(去重)

ints = np.array([1,2,3,4,2,4,3,5])
ints

np.unique(ints)  #array([1, 2, 3, 4, 5])

6.2 集合运算

# 包括但不限于一维数组
1. 交集
   np.intersect1d(x,y) 
   等价于: np.in1d(x,y)    #得到一个表示“x的元素是否包含于y”的布尔型数组
          x[np.in1d(x,y)]
2. 并集(默认去重)
   np.union1d(x,y)
3. 差集
   np.setdiff1d(x,y)      #差集,A-A∩B 即元素在x中且不在y中
4. 补集
   np.setxor1d(x,y)      #存在于一个数组中但不同时存在于两个数组中的元素,并集减交集

你可能感兴趣的:(Numpy运算与排序 (2020-04-07))