Numpy学习小结

本文详细介绍NumPy库在数据科学中的核心应用,包括数据合并、类型转换、数组运算、线性代数运算等内容,并对比了NumPy与标准Python列表在操作上的差异。
摘要由CSDN通过智能技术生成

目录

1、数据合并及类型转换

# 数据合并拼接
np.hstack([arr1, arr2]) # 横向合并,必须保证两数组行数相等
等价于:np.column_stack([arr1,arr2])
np.vstack([arr1, arr2]) # 纵向拼接,必须保证两数组列数相等
等价于:np.row_stack([arr1, arr2])
# 将数组转换为list
b = a.tolist() # b为list类型
# 强制转换数组数据类型
b = np.zeros([3,4]).astype(float)

2、数组运算

# 常用简单运算
arr1**2  np.exp(arr1)  np.log(arr1)  np.sqrt(arr1)  np.abs(arr1)
相同形状数组可进行+ - * /  整除//  取余%

np.sum(arr1)  # 对所有元素求和
np.sum(arr1, axis=0)  # 对每一列求和
np.sum(arr1, axis=1)  # 对每一行求和
np.cumsum(arr1)  # 对所有元素累积求和
np.cumsum(arr1, axis=0)  # 对每一列元素累积求和
np.cumsum(arr1, axis=1) # 对每一行元素累积求和
np.max(arr1, axis=0)  # 求每一列元素的最大值
np.min(arr1, axis=1)  # 求每一行元素的最小值
np.mean(arr1)  # 求所有元素的均值
np.median(arr1, axis=0)  # 求每一列元素的中位数
np.var(arr1, axis=0)  # 求每一列元素的方差
np.std(arr1, axis=0)  # 求每一列元素的标准差

还有cos,arccos,sin,arcsin,tan,arctan等,np.ceil() np.floor()向下取整

np.where(arr1<0, ‘pos’, 'neg')  # 相当于excel的IF函数
np.unique(arrr1)  # 计算唯一值
# 集合运算
intersect(x,y)  # 计算x和y的公共元素,即交集
union1d(x,y)  # 计算x和y的并集
setdiff1d(x,y)  # 计算x和y的差集,即元素在x中,不在y中
setxor1d(x,y)  # 计算集合的对称差,即存在于一个数组中,但不同时存在于两个数组中
in1d(x,y)  # 判断x的元素是否包含于y中

np.argsort() # 返回排序后的索引
np.where() # 返回制定条件的索引

3、线性代数运算

# 线性代数运算
# 同样numpu也跟R语言一样,可以非常方便的进行线性代数方面的计算,如行列式、逆、迹、特征根、特征向量等。但需要注意的是,有关线性代数的函数并不在numpy中,而是numpy的子例linalg中。
np.linalg.det(arr13) #返回方阵的行列式
np.linalg.inv(arr13) #返回方阵的逆
np.trace(arr13) #返回方阵的迹(对角线元素之和),注意迹的求解不在linalg子例程中
np.linalg.eig(arr13) #返回由特征根和特征向量组成的元组
np.linalg.qr(arr13) #返回方阵的QR分解
np.linalg.svd(arr13) #返回方阵的奇异值分解
np.dot(arr13,arr13) #方阵的正真乘积运算

4、注意区别

  • 1、Numpy切片为视图(copy用法)
    Numpy数组切片是原始数据的一个视图,并不对原始数据进行复制,更新可改变原数据。不管你将切片怎么赋值到变量,也只是一个视图,更新还是会影响原数据。要想取出一块数据,则需要显式的复制。nd_data.copy()。
a=np.array([1,2,3,4,5])
b=a[2:4]
b
array([3, 4])
b[0]=111
b
array([111,   4])
a
array([  1,   2, 111,   4,   5])
  • 2、列表切片为指针,也属于潜复制
a=[1,2,3,4,5]
b=a[2:4]
b
[3, 4]
b[0]=111
b
[111, 4]
a
[1, 2, 3, 4, 5]
  • 3、列表显式复制(list用法)
    python中list(a)用法,在列表赋值过程中。
    a=[1,2,3,4]
    b=a 区别于 b=list(a)
    list(a)相当于复制a,当a的值改变时,b的值不发生变化。而b=a只是将a的指针传给b。

脚注

若有错误,请及时指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值