Python Numpy库

在学习Opencv和深度学习前,介于我没怎么用过Python的Numpy库和Pandas库,先开个帖子记录下关于数据处理的常用函数~(对照B站【莫烦Python】学习,应该还有补充的东西,以后碰见了再加)


关于Python Numpy库: 

  • 基础

array=np.array([[1,2,2],
                [3,4,5]]) # np.array可以将列表转换成array
print(array) # 打印出整个array
print('number of dim',array.ndim) # dim就是行数
print('shape',array.shape) # shape指的是(行,列)
print('size',array.size) # size指的是这个array里有几个元素
a= np.array([2,32,45],dtype=np.int) # 默认32位,可能是为了省空间
print(a.dtype)

Numpy数组和矩阵的区别:矩阵必须是二维的 ,而数组可以是一维到任意维。 

  • 常用创建数组的函数

b=np.zeros((2,3)) # 创建2*3的数组,元素全为0

c=np.ones((2,3)) # 创建2*3的数组,元素全为1

d=np.empty((2,3)) # empty函数构建2*3的一个未初始化的数组,元素可能是内存位置上存在的任何数值

e=np.arange(10,20,2) # 创建一个一维数组,从10到20(20取不到,左闭右开),步长为2

e1=np.arange(12).reshape(3,4) # 创建一个1*12,数值从0到11的数组,再reshape成为3*4的数组

f=np.linspace(1,10,5) # 生成取值为1到10之间,有5个节点(4段)的线段

h=np.random.random((3,4)) # 随机选取(0,1)中的任意数值
  • 基本运算

k=np.arange(4).reshape(2,2)

print(k**2) # 对元素进行平方运算
print(2*np.sin(k))
print(k<2) # 对于k中元素进行true 或 false的判断
print(np.sum(k,axis=0),np.max(k,axis=1),np.min(k)) 
# axis=0,对列进行运算,axis=1,对行进行运算

g=2*np.ones((2,2))

print(k+g) # 对应元素相加
print(k-g) # 对应元素相减
print(k*g) # 第一种乘法,即对应元素相乘
print(np.dot(k,g)) # 第二种乘法,即矩阵乘法,另一种表达:k.dot(g)
  • 其他操作

a=np.arange(2,14).reshape(3,4)
print(np.argmin(a)) # 打印出a中最小值的索引
print(np.argmax(a)) # 打印出a中最大值的索引
print(np.mean(a)) # 求a的平均值,也可以用a.mean(),np.average(a)表示
print(np.median(a)) # 求a的中位数
print(np.cumsum(a)) # 累加函数,如果没有区分axis,就当成一个一维数组
print(np.diff(a)) # 累差函数
print(np.nonzero(a)) # 得到不同的arrays从不同维度描述a中非零元素的索引值
print(np.clip(a,5,9)) # a中所有小于5的全赋值为5,大于9的全赋值为9--截取函数
b=np.random.random((2,3)) 
print(np.sort(b)) # 对b进行排序,但是这个排序不是针对整个b的,而是针对b中每一行
print(b.T) # 转置,即变成(3,2)
print(b[1,1]) # 索引
print(b[1,0:2]) # 切片,取第二行的0和1元素组成新的数组,左闭右开
print(b.flatten()) # 把原本是(2,3)的b变成一维数组

矩阵和数组都可以通过后面加.T得到转置,但是矩阵还可以在后面加.H得到共轭矩阵,加.I得到逆矩阵

而其他的多维数组可以通过object[:,np.newaxis]得到翻转后的数组

合并数组:

k=np.array([1,2,3]) 
g=np.array([4,5,6])

print(np.vstack((k,g))) # 使两个arrays上下拼在一起的函数
print(np.hstack((k,g))) # 使两个arrays左右拼在一起的函数
print(k[:,np.newaxis]) # 用来翻转数组
print(np.concatenate((k,g,g,k),axis=0)) 
# 虽然这个函数和vstack,hstack一样都可以合并多个array,但是这个可以要求在不同的维度上合成

拆分数组: 

s=np.arange(12).reshape(3,4)

print(np.split(s,2,axis=1)) 
# split函数拆分矩阵,axis=1是对行进行操作,即每一行从头开始数,数两个数就拆开
print(np.split(s,1,axis=0)) # 对列进行操作,每往下走,遇到一个数就拆开一次
print(np.array_split(s,3,axis=1)) 
# 这个也是一个拆分函数,但是和split不同,这个可以实现不均匀分割,3--分成3部分
print(np.vsplit(s,3)) # 等同于axis=0,3--分成3部分
print(np.hsplit(s,2)) # 等同于axis=1,2--分成2部分

数组赋值和复制:

c=np.arange(4)
b=c # numpy中赋值,改变c的值,那么b的值也会被改变
d=c.copy() # 复制函数,d只是复制了c的值,但是当c改变的时候,d不变(即只赋值,不关联)
c[1]=5
print(c)
print(b)
print(d)

 结果:

[0 5 2 3]
[0 5 2 3]
[0 1 2 3]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值