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) #存在于一个数组中但不同时存在于两个数组中的元素,并集减交集