三元条件表达式
学过c/c++的可以参照三元表达式:condition ? x : y
1.x if condition else y
得到:
2.np.where(condition, x, y)
通常应用于数组、矩阵等地的条件判断,相较于第一个更加简洁。
得到:
数学和统计方法
1.mean()——计算平均值
(1) arr.mean()
or np.mean(arr)
计算数组 arr 所有元素的平均值。
(2) arr.mean(axis=0)
or np.mean(arr, axis=0)
对各列求平均值;arr.mean(axis=1)
or np.mean(arr, 1)
对各行求平均值。
其中,axis=
可以省略。
得到:
2.sum()——计算求和
(1) np.sum(arr)
,计算所有元素的和。
(2) np.sum(arr, 0)
,计算各列的和;np.sum(arr, 1)
,计算各行的和。
得到:
(3) 计算数组中符合条件的值的个数
arr = np.array([1, -2, 3, 4, 0])
print('arr中大于0的总数sum:',(arr>0).sum())
得到:
3.std()——计算标准差
用法同上(1)(2)。
注:当arr数组的数据小时,应使用属性ddof=1
使结果更准确。
得到:
4.var()——计算方差
5.cov()——计算协方差
得到:
6.max()、min()求最值 以及 argmax()、argmin()求最值下标
得到:
7.cumsum()——累计和 以及 cumprod()——累计积
得到:
e.g.
计算前:arr = [a, b, c, d]
,
累计和计算:a = a+0; b = b+a; c = c+b+a; d = d+c+b+a;
累计积计算:a = a*1; b = b*a; c = c*b*a; d = d*c*b*a;
8.any()——判断是否含True(或者是否含非0数)
arr = np.array([1, -2, 3, 4, 0])
print(arr.any()) #or print(np.any(arr))
得到:
9.all()——是否均为True(或是否均为非0数)
arr = np.array([1, -2, 3, 4, 0])
print(np.all(arr)) #or print(arr.all())
得到:
排序
(1)np.sort(arr, axis, kind, order)
,返回数据。其中:
arr
是要排序的数组。
axis
标注从哪个轴向排序,一般情况下,0是列,1是行。
kind
有三个值,默认是快速排序:
order
指要排序的字段,可以是字符串或列表。
e.g.1
得到:
e.g.2:
得到:
(2) np.argsort(arr, axis, kind, order)
,同上。区别在于返回的不是数据而是下标。
得到:
(3) lexsort 常用:
np.lexsort((a, b))
a和b可以是字典、列表。返回索引数组。被排列的是a,b充当第二排序介质(自己想的名字,意会就好),即先比较a数组的值,如果有相同的值,则比较相应下标的b数组中的值,以该值来确定a中相同值的顺序。可以将ab数组看作一张表,先比较第一行a中的值,相等再比较第二行b中的值,以此类推。
集合运算
1.np.unique(x)
,计算x集合中的唯一元素,并返回结果。
arr = np.array([3, 3, 4, 5, 1, 1, 2])
print(np.unique(arr))
得到:
2.np.intersect1d(x, y)
,计算x集合和y集合的公共元素。
arr1 = np.array([3, 3, 4, 5, 1, 1, 2])
arr2 = np.array([1, 2, 4, 5, 7, 7])
print(np.intersect1d(arr1, arr2))
得到:
3.np.union1d(x, y)
,计算x集合和y集合的并集。
arr1 = np.array([3, 3, 4, 5, 1, 1, 2])
arr2 = np.array([1, 2, 4, 5, 7, 7])
print(np.union1d(arr1, arr2))
得到:
4.np.in1d(x, y)
,得到一个“x是否包含于y”的布尔型数组。
arr1 = np.array([3, 3, 4, 5, 1, 1, 2, 8])
arr2 = np.array([1, 2, 4, 5, 7, 7])
print(np.in1d(arr1, arr2))
得到:
5.np.setdiff1d(x, y)
,计算x-y的集合,即x中有而y中没有的集合。
arr1 = np.array([3, 3, 4, 5, 1, 1, 2, 8])
arr2 = np.array([1, 2, 4, 5, 7, 7])
print(np.setdiff1d(arr1, arr2))
得到:
6.np.setxor1d(x, y)
,对称差,即得到存在一个数组而不同时存在于不同数组的元素的集合。
arr1 = np.array([3, 3, 4, 5, 1, 1, 2, 8])
arr2 = np.array([1, 2, 4, 5, 7, 7])
print(np.setxor1d(arr1, arr2))
得到: