《利用python进行数据分析》读书笔记之Numpy基础(二)

通用函数

通用函数,也称为ufunc,可以对ndarray中的元素进行逐个操作,分为一元通用函数和二元通用函数。
一元通用函数:接受一个数组并返回结果,如:

arr = np.arange(10)
print(np.sqrt(arr))
#[0.         1.         1.41421356 1.73205081 2.         2.23606798
 #2.44948974 2.64575131 2.82842712 3.        ]
print(np.exp(arr))
#[1.00000000e+00 2.71828183e+00 7.38905610e+00 2.00855369e+01
 #5.45981500e+01 1.48413159e+02 4.03428793e+02 1.09663316e+03
 #2.98095799e+03 8.10308393e+03]

二元通用函数:接受两个数组并返回结果,如:

arr1 = np.array([1,3,4,7])
arr2 = np.array([2,1,5,3])
print(np.maximum(arr1,arr2))
#返回两个数组中较大的元素
#[2 3 5 7]

常用一元通用函数、二元通用函数参考:
常见通用函数

面向数组的编程

将条件逻辑作为数组操作

np.where函数是三元表达式x if condition else y的向量化版本,具体使用例子如下:

arr1 = np.array([1.1,1.2,1.3,1.4,1.5])
arr2 = np.array([2.1,2.2,2.3,2.4,2.5])
cond = np.array([True,True,False,True,False])
result = np.where(cond,arr1,arr2)
print(result)
#[1.1 1.2 2.3 1.4 2.5]

事实上where的第二个参数和第三个参数不需要是一个数组,也可以是一个数字,比如以下例子:

arr = np.random.randn(4,4)
print(np.where(arr>0,1,-1))
#生成一个随机数组,将大于0的元素替换为1,小于0的元素替换为-1

数学和统计方法

方法 描述
sum 沿着轴向计算所有元素的和
mean 数学平均
std,var 标准差和方差,可以选择自由度调整(默认是0)
min,max 最小值和最大值
argmin,argmax 最小值和最大值的位置
cumsum 从0开始元素累积和
cumpord 从1开始元素累积积

我们既可以直接调用数组实例方法也可以使用顶层的numpy函数。

布尔值数组方法

布尔值会被强制为1(True)或者0(False),因此可以使用sum计算数组中True的个数:

arr = np.random.randn(100)
print((arr > 0).sum())

另外两个非常有用的方法为any和all,分别判断数组中是否有一个/全部为True,返回True或者False:

bool = np.array([True,False,False,False])
print(bool.any())
#True
print(bool.all())
#False

排序

可以使用sort方法进行排序,对于一维数组:

arr = np.random.randn(10)
arr.sort()

对于多维数组,可以给sort中传值看,使其按某个轴进行排序:

arr = np.random.randn(4,4)
arr.sort(1)
#按列排序,即每一行数据从小到大排列

唯一值与其他逻辑集合

np.unique可以提取数组中的唯一值,将其排序后返回:

arr = np.array([3,3,3,4,5,1,2,2])
print(np.unique(arr))
#[1 2 3 4 5]

常见数组集合操作见下表:

方法 描述
unique(x) 计算x的唯一值并排序
intersected(x,y) 计算x和y的交集并排序
union1d(x,y) 计算x和y的并集并排序
in1d 计算x中的元素是否包含在y中并返回一个布尔值数组
setdiff1d(x,y) 差集,在x中但不在y中的x元素
setxor1d(x,y) 异或集,在x或y中,但不属于x、y交集中的元素
发布了14 篇原创文章 · 获赞 0 · 访问量 238

猜你喜欢

转载自blog.csdn.net/pnd237/article/details/104223545
今日推荐