第六节 numpy的常用属性和方法
import numpy as np # 二维数组 t1 = np.array([range(10),range(10,20)]) print(t1) # 三维数组 t2 = np.array([[range(10),range(10,20)],[range(10),range(10,20)]]) print(t2) # 查看数组的形状,打印(2, 10),表示2行10列,打印(2, 2, 10),表示两块,每块都是2行10列 print(t1.shape) print(t2.shape) # reshape改变数组的形状,将二维降为一维,20是数组元素的总个数,flatten只能将二维转换成一维 print(t1.reshape((20,))) print(t1.flatten()) # 数组转置,swapaxes交换轴,原来是0和1 t1.transpose() print(t1.T) t1.swapaxes(1, 0) # 数组的索引和切片 print(t1[1]) # 取一行 print(t1[1:3]) # 取连续多行 print(t1[[1, 3, 4]]) # 取不连续多行 print(t1[:,1]) # 取一列 print(t1[:,1:3]) # 取连续多列 print(t1[:,[1,3,5]]) # 取不连续多列 print(t1[1:3,2:4]) # 取交叉区域的数据 print(t1[[1,2],[3,4]]) # 取不相邻的数据 # 数组中值的修改 t1[[1,2],[3,4]] = 0 t1[1:3,2:4] = 1 t1[t1<5] = 18 # 将t1中小于5的元素都改成18,t1<5返回的是true和false数组 np.where(t1<10, 0, 10) # 将t1中小于10的替换成0 ,否则都替换成10 t1.clip(10, 18) # 将t1中小于10的替换成10,大于18的替换成18 # 数组的拼接 np.vstack((t1, t2)) # 竖直拼接,t1在上 np.hstack(t1, t2) # 水平拼接,t1左 # 数组的交互 t1[[1, 2], :] = t1[[2, 1], :] # 行交换 t1[:, [1, 2]] = t1[:, [2, 1]] # 列交换 # 数据的分割,跟拼接刚好相反 np.vsplit(t1, 2) # 竖直分割,从第二行开始将t1分为两部分 np.hsplit(t1, 2) # 水平分割,从第二列开始将t1分为两部分 # 快速创建全为0或者1的数组 np.zeros(2, 3) # 两行三列 np.ones(3, 4) # 三行四列 # 创建一个对角线为1的正方形数组 np.eye(10) # 10行10列,对角线元素为1,其他全为0 # 获取行列最大值或者最小值的位置 np.argmin(t1, axis=0) # 获取每行最小值的位置,返回的是代表位置下标的元组 np.argmin(t1, axis=1) # # 获取每列最小值的位置,返回的是代表位置下标的元组 # numpy中的随机数 np.random.rand(2, 3) # 随机生成2行3列的均匀分布的数组,浮点数,0-1 np.random.randn(2, 5) # 随机生成2行3列的标准正态分布的数组,浮点数 np.random.randint(10, 20, (3, 5)) # 随机生成10-20之间的3行5列的整数数组 np.random.uniform(10, 20 ,(3, 5)) # 随机生成2行3列的均匀分布的数组,整数数,10-20 np.random.normal(loc=1, scale=2, size=(3, 5)) # 从指定正态分布中随机抽取样本,loc是分布中心,scale是标准差,3行5列数组 np.random.seed(5) # 随机数种子,5是给定的种子值,因为生成的是伪随机数,所以通过设置相同的随机种子,可以每次生成相同的随机数,和其他随机数方法配合使用 # numpy中的copy和view a = t1 # a和t1会相互影响 a = t1[:] # a和t1会相互影响 a = t1.copy() # a和t1互不影响 # numpy中的nan,nan和任何值进行计算返回值都是nan print(np.nan == np.nan) # 返回false,可以利用这个特性来计算数组中的nan有多少个 np.count_nonzero(t1) # 计算数组t1中有非0元素的个数 np.count_nonzero(t1!=t1) # 返回t1数组中nan的个数 np.isnan(t1) # 返回和t1对应的布尔类型的数组,元素是nan,则对应位置为true np.count_nonzero(np.isnan(t1)) # 返回t1数组中nan的个数 # 数组和数字计算,每个元素都进行 # 数组和形状一样的数字进行计算,也是对应位置一一进行计算 # 当数组和不同形状的数组进行计算时,某一维度一样且另一维度是0,才能进行计算,否则会报错 np.sum(t1, axis=0) # 计算t1中每一列的和,返回包含每一列和的数组,axis没有这个参数则计算整个数组的和 t1.sum(axis=0) # 计算t1中每一行的和,返回包含每一行和的数组 t1.mean(axis=0) # 均值 np.median(t1, axis=0) # 中值,这个方法只能由np调用 t1.max() t1.min() np.ptp(t1, axis=0) # 极值,即最大值和最小值之差,这个方法只能由np调用 t1.std(axis=1) # 标准差 # 读入数据,dtype指定数据类型,skiprows指定跳过多少行,一般跳过表头,usecols指定索引列时第几列,unpack数组转置 file_path = r'E:\anacondatest\PythonData\高校信息.csv' np.loadtxt(file_path, delimiter=",", dtype='', skiprows=1, usecols=1, unpack=False)