numpy库学习

学习计算机视觉学习需要用到python的扩展库numpy进行数据分析,这篇文章仅记录numpy学习笔记
  • 安装numpy以及包管理工具pip的使用

    命令行输入:

    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本

    使用pip -v可以查看是否安装成功
    在项目目录下pip install numpy,其他包安装也如此

  • numpy创建一个矩阵以及基本操作

	import numpy as np
	list=[[1,2,3],[4,5,6]]
	#将列表转为一个矩阵的方法
	# 定义创建类型 使用arr.dtype获取
	arr=np.array(list,dtype=np.int)
	# 3行4列的0矩阵
	zero=np.zeros((3,4))
	# 全部为1
	ones=np.ones((3,4))
	# 为空 生成都接近0的数不是0
	empty=np.empty((3,4))
	# reshape重新定义形状
	arrange=np.arange(10,20,2).reshape((3,4))
	# 1-10 分为20端
	arrange1=np.linspace(1,10,20)
	
	print("维数number of dim:",arr.ndim)
	# 几行几列
	print("形状shape:",arr.shape)
	# 总共元素
	print("大小size:",arr.size)
  • 矩阵运算

普通+ - * / 不列举 为逐个运算

	import numpy as np
	a=np.array([[10,20],[30,40]])
	b=np.arange(4).reshape((2,2))
	# 对a中每个值求sin 使用numpy带的方法
	# 其他三角函数同样 => [-5.44021111  9.12945251 -9.88031624  7.4511316 ]
	c=10*np.sin(a)
	# b中小于3的 => [ True  True  True False]
	c=b<3
	print("矩阵相乘:",np.dot(a,b),a.dot(b))
	print("随机生成矩阵:",np.random.random((2,4)))
	print("求和在维度为0(列) 1(行):",np.sum(b,axis=0))
	print("求最小值/最大值:",np.min(a),np.max(a))
	print("最小值/最大值的索引:",np.argmin(a),np.argmax(a))
	print("平均值,中位值,",np.mean(a),np.average(a),np.median(a))
	print("输出累加矩阵:",np.cumsum(b))
	print("前向差分后的矩阵:",np.diff(b))
	print("输出非零值得位置(以两个数组输出,一个为行位置,一个为列位置)",np.nonzero(b))
	print("排序(逐行的排序)",np.sort(b))
	print("矩阵的转置(行变列,列变行)",a.T,np.transpose(a))
	print("矩阵的上下限设置,(小于5的为5,大于9的为9,中间不变)",np.clip(a,5,9))

几乎所有的方法都可以指定axis=0参数,为0对纵向进行运算,为1对横向进行计算

  • nmupy索引
	import numpy as np
	a=np.arange(3,15).reshape((3,4))
	print(a[0][1])
	print(a[1])
	print("输出第2行所有的数:",a[1,:])
	print("输出第2行第二个和第三个数:",a[1,1:3])
	print("转化为只有1行的序列:",a.flatten())
	#必须为一维的
	print("从一维数组中随机抽取两个数:",np.random.choice(a,2,replace=False))
	#迭代interation生成行和列
	for row in a:
	    print(row)
	for column in a.T:
	    print(column)
	# 迭代生成每一项
	for item in a.flat:
	    print(item)
  • nmupy array的合并
	import numpy as np
	# 其实还是一个序列,直接使用a.T是没有作用的
	a=np.array([1,1,1])
	b=np.array([2,2,2])
	print("横向合并hstack horizontal stack:",np.hstack((a,b)))
	print("纵向合并vstack vertical stack:",np.vstack((a,b)))
	# print(a.T)
	print("在列上添加一个维度:",a[:,np.newaxis])
	print("在行上添加一个维度",a[np.newaxis,:])
	print("在列方向上进行合并 为axis=1在行方向上进行合并",np.concatenate((a,b),axis=0))
  • nmupy array的分割
	import numpy as np
	a=np.arange(12).reshape((3,4))
	# 不能进行不等分割
	print("对矩阵进行横向分割",np.split(a,2,axis=1))
	print("对矩阵进行不等分割:",np.array_split(a,3,axis=1))
	# 更为简单的分割
	print("纵向分割:",np.vsplit(a,3))
	print("横向分割:",np.hsplit(a,4))
  • deep copy
	import numpy as np
	a=np.arange(4)
	b=a
	# deep copy
	c=a.copy()
	print(a is b)#True
	print(c is a)#False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值