Numpy
数组的运算 多维的数组对象 , ndarray #1. 实际数据 . 2.元数据 描述信息
数组的基础属性 :
1 .ndim #维度 2 .shape #维度数值个数 3 .size #数组内容个数 4 .dtype #数组类型 5 .itemsize #数组内容占内存多少字节
数组的创建 :
# array() 数组内容是: 函数,列表,元组,数据,生成器,序列 import numpy as np #示例 np.array(range(10) np.array([1,2,3,4,5]) np.array([[1,2,3,4,5],[6,7,8,9,9]]) # arange() 类似于Python的 range() np.arange(10) #生成10个整数 np.arange(10.) #生成10个浮点型数值 np.arange(1,10,0.1) #从1到10 每隔0.1生成1个 np.arange(10000) #生成10000,显示前3个,中间省略,显示后面3个 # linspace() 返回在间隔[开始,停止]上 num个均匀的样本 np.linspace(2.0,3.0,num=5) #2.0到3.0 生成5个均匀的值 np.linspace(2.0,3.0,num=5,endpoint=False) #endpoint 默认包头包尾,False不包尾 np.linspace(2.0,3.0,num=5,retstep=True) #retstep 步长,分5个值得步长是多少 默认为False # zeros()/zeros_like()/ones()/ones_like() #数组生成,zeros 0填充 ones 1填充 *_like() np.zeros(5) #生成1维5个0 float类型 np.zeros((2,3,2),dtype=np.int) #生成2维,3列,0填充,类型为int32 因为多了个2 所以是3维的,可以任意维 # ↑↑↑ 语法 numpy.zeros(shape ,dtype=float,order='C'): 返回给定形状和类型的新数组,用零填充.shape 是指形状 np.zeros_like(np.arange(10)) #复制arr1 成一个新的数组,同样的新的数组 # eye() 生成正方形的N*N的单位矩阵,对角线为1,其余为0 np.eye(10)
Numpy 的通用函数 基本操作 :
# 数组形状 转置,形状变换,行列转换 # .T / .reshape() / .resize() :返回一个新的数组 arr1.T arr2 = np.ones((5,10)) arr2.reshape(10,5) #形状改变 np.resize(np.arange(1,13).reshape(3,4),(2,2)) #resize() 改变形状,元素不够填充 # 数组数据复制 .copy() : 数组的副本 arr1.copy() # 数据类型转换 .astype() 参数 : np.数据类型 arr3.astype(np.int) #返回一个新的数组 int32 , float64 # 数组的堆叠和拆分 hstack() / vstack() / stack() np.hstack((数组1,数组2)) # 水平堆叠 , 行数要一致 np.vstack((数组1,数组2)) # 垂直堆叠 , 列数要一致 np.stack((数组1,数组2),axis=0|1) # 通过指定维度,轴,需要形状相同 np.hsplit(数组,列数) # 水平拆分--按列 np.vsplit(数组,行数) # 垂直拆分--按行 # 数组的简单运算 矢量化 # + / - / * / 除 / **1 / .mean() / .max() / .min() / .var()方差 / .std() 标准差 # 维度计算, 行,列 上述函数可添加参数 axis=行,列 sort() 参数为数组 数组排序
Numpy 索引和切片 :
ar = np.arange(16).reshape(4,4) ar[0] #切除一行 切片为下一个维度的一个元素 ar[0][-1] #二次索引,得到其中的一个值 ar[:3] #切出多行 ar[1,1] #类似二次索引 ar[:2 , 1:] #二维切片 # bool 布尔类型索引 False /True ar = np.arange(12).reshape(3,4) i = np.array([True,False,True]) j = np.array([False,True,False,False]) ar[i] #选所有为True ar[i,:] #选行 ar[i,j] #选列 # 基本的布尔类型 # 数组的基本运算bool > < != // % ar[ar > 5] #选取大于?的数
Numpy 随机数 :
# Numpy随机数 np.random np.random.normal(size=(5,5)) #符合标准正态分布的?*?样本值 np.random.rand(4,5) # [0,1] 之间的随机样本或N维附件数组 均匀分布 np.random.randn(4,5) #生成一个浮点数或者N维的浮点数组 正态分布 # np.random.randint(low ,high=None,size=None ,size =None,dtype='1') # 生成一个整数或者N维的整数数组 若high不为None时,取[low,high]之间随机整数 # 否则取值(0,low)之间随机整数,且high必须大于low. dtype参数,只能是int类型 np.random.randint(0,10,size=6) # 取0到9随机整数 ,长度6 np.random.randint(1,100,size=[3,5]) #size 参数[] 为[维度,长度]
Numpy 数据的存储和读取 :
# Numpy 输入输出,数据的存读 np.save(路径及文件.npy, 数组数据) np.load(路径及文件.npy) #文本类数据 np.savetxt(路径及文件.txt,数组,delimiter=',') delimiter 数据分割符 np.loadtxt(路径及文件.txt,delimiter=',')