利用数组进行数据处理

三元条件表达式

学过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))

得到:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值