Numpy学习

1.关于numpy
1.什么是numpy:
	numpy是python开源的科学计算包,是高级的数值编程工具:
    	1.强大的N维数组对象:ndarray
        2.可以用来对数组结构进行运算(不用通过循环与遍历) --- 直接进行矩阵运算
        3.拥有非常强大的模块库:随机数、线性代数等等
    许多高级的工具都是以numpy为基础的:pandas
2.关于numpy我们需要学习哪些?
	1.numpy基础的数据结构
    2.numpy通用的函数
    3.numpy索引以及切片
    4.numpy随机数
    5.numpy数据的输入与输出
    
2.numpy的基础数据结构
概念:numpy数组是一个多维数组对象,也称为ndarray,由两部分组成:
	1.实际的数据
	2.描述这些数据的元数据
	
如何创建数组:
	1.导入模块:numpy
		import numpy as np
	2.创建数组对象:array
		ar = np.array()  --- 括号类可以使列表  元组  数组
注意:
	数组的维数称为秩 - rank,一维数组的秩为1,二维数组的秩为2,依次类推,秩其实是描述轴的数量
	

常用的方法:
方法作用
arr.ndim输出数组的维度的个数
arr.shape数组的维度,比如n行m列 维度就是shape(n,m)
arr.size数组总元素的个数 n * m
arr.dtype数组中每个元素的类型
arr.itemsize每个元素的字节大小
常见创建数组的方法:
	1.array()
    	格式:np.array()
        注意:括号内可以使列表、元组 、生成器等
    
    2.arange()
    	格式:np.arange()
        注意:用生成均匀间隔的值,类似range,不同的是,它可以返回小数
        
    3.linsapce()
    	格式:np.linspae(开始,停止,num=50,[endpoint=True,retstep=False])
        注意:在这个区间内生成num个均匀的间隔样本,默认是50
    
    5.zeros()/zeros_like/onses()/ones_like()
    	格式:np.zeros(数量)/np.zeros_like(数组)
        注意:在使用zeros和ones时一定要给定数量,zeros_like是返回与给定数组相同形状和类型的零或1数组
    
    6.eye()
    	格式:np.eye(数量)
        注意:创建一个正方的 N * N 的单位矩阵,对角线为1,其余为0
        
3.通用函数
数组形状:
	.T方法:
    功能:将形状转置,例如原shape为(3,4) ---> (4,3),一维数组形状不变
    用法:
    	已知 : ar1 = np.arange(10)
        	print(ar1.T)
    
    .reshape方法:
   		已知:ar1 = np.onse(5,2)
    	改变方法有三种:
        	1.直接改变已有形状:
            	ar2 = ar1.reshape(2,5)
            2.生成数组后直接改变形状
            	ar3 = np.zeros((4,6)).reshape(3,8)
    		3.参数内添加数组,目标形状改变
            	ar5 = np.reshape(np.arange(12),(3,4)) 
                
    .resize方法:
    	numpy.resize(a, new_shape):返回具有指定形状的新数组,如有必要可重复填充所需数量的元素。
        ar6 = np.resize(np.arange(5),(3,4))
       
数组的复制:
	copy:
        功能:生成数组及其数据的完整拷贝
    注意:.T/.reshape/.resize都是生成新的数组
    
数组类型的转换:
	.astype()
    	用法:在生成数组的同时,可以使用dtype指定元素的类型
        	ar2 = ar1.astype(np.int32)  --- 生成新的类型
    	注意:养成好习惯,数组类型用 np.int32,而不是直接用int32
    
数组的堆叠:
	numpy.hstack(tup):水平(按列顺序)堆叠数组
    注意:一维数组堆叠a,b可以不一样,二维必须是一样
    
    numpy.vstack(tup):垂直(按列顺序)堆叠数组
    注意:沿着新轴连接数组的序列,形状必须一样!
    	 # 重点解释axis参数的意思,假设两个数组[1 2 3]和[4 5 6],shape均为(3,0)
         # axis=0:[[1 2 3] [4 5 6]],shape为(2,3)
         # axis=1:[[1 4] [2 5] [3 6]],shape为(3,2)

数组的拆分:
	numpy.hsplit(ary, indices_or_sections):将数组水平(逐列)拆分为多个子数组 → 按列拆分
	输出结果为列表,列表中元素为数组
    
    numpy.vsplit(ary, indices_or_sections):将数组垂直(行方向)拆分为多个子数组 → 按行拆
        

numpy读取/写入数组数据、文本数据:
	# 存储数组数据 .npy文件
    import os
    os.chdir('C:/Users/Hjx/Desktop/')

    ar = np.random.rand(5,5)
    print(ar)
    np.save('arraydata.npy', ar)
    # 也可以直接 np.save('C:/Users/Hjx/Desktop/arraydata.npy', ar)
    
    # 读取数组数据 .npy文件
    ar_load =np.load('arraydata.npy')
    print(ar_load)
    # 也可以直接 np.load('C:/Users/Hjx/Desktop/arraydata.npy')
    
    
    # 存储/读取文本文件
    ar = np.random.rand(5,5)
    np.savetxt('array.txt',ar, delimiter=',')
    # np.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# '):存储为文本txt文件

    ar_loadtxt = np.loadtxt('array.txt', delimiter=',')
    print(ar_loadtxt)
    # 也可以直接 np.loadtxt('C:/Users/Hjx/Desktop/array.txt')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值