一、Numpy数组的生成
(1)生成一般数组array()函数
import numpy as np # 生成一般数组array()函数 # 传入一个列表 print(np.array([1,2,3,4,5])) # 传入一个元祖 print(np.array((1,2,3,4,5))) # 传入一个嵌套列表 print(np.array([[1,3,5,7],[2,4,6,8]]))
(2)生成特殊类型的数组
# 生成特殊类型的数组 # np.arange(start,stop,step) 不包括stop print(np.arange(1,10,2)) print(np.arange(10)) # 生成指定形状全为0的数组 用到zeros函数 print(np.zeros(3)) # 生成长度为2行3列全为0的数组 print(np.zeros((2,3))) # 生成指定形状全为1的数组 ones print(np.ones(3)) # 生成长度为2行3列全为1的数组 print(np.ones((2,3))) # 生成一个正方形单位矩阵 # 生成一个3x3的单位矩阵 print(np.eye(3))
(3)生成随机数数组
# np.random.rand()方法,主要用于生成(0,1)之间的随机数组 print(np.random.rand(4)) # np.random.randn()方法用来生成满足正态分布的指定形状数组 # 生成长度为5的满足正太分布的数组 print(np.random.randn(5)) # 生成长度为2行3列的满足正太分布的数组 print(np.random.randn(2,3)) # np.random.randint()方法与np.arange()方法类似,用于生成一定范围内的随机数 # 生成在区间[2,9)长度的5的数组 print(np.random.randint(2,9,5)) # 在区间[0,5)上生成长度为10的数组 print(np.random.randint(5,size=10)) # 在区间[0,5)上生成长度为2行3列的数组 print(np.random.randint(5,size=(2,3))) # np.random.choice()方法主要用来从已知数组中随机选取相应大小的数组 # 从数组a中选取3个值组成一个数组 print(np.random.choice(5,3)) # np.random.shuffle()方法主要用来将原数组打乱
二、Numpy数组的基本属性
(1)数组的形状
# 数组的形状 import numpy as np arr= np.array([[1,2,3],[4,5,6],[7,8,9]]) print(arr) print(arr.shape)
(2)数组的大小
# 数组的大小 print(arr.size)
(3)数组的类型
# 数组的类型 print(arr.dtype)
(4)数组的维数
# 数组的维数 print(arr.ndim)
三、Numpy数组的数据选取
(1)一维数据选取
import numpy as np arr = np.arange(10) print(arr) # 一维数据选取 # 传入某个位置 print(arr[3]) # 获取末尾最后一个数据 print(arr[-1]) # 获取末尾倒数第二个数据 print(arr[-2]) # 传入某个区间 # 获取3到5为位置但不包含5 print(arr[3:5]) # 获取3以后所有的数组 print(arr[3:]) # 获取3以前所有的数组 print(arr[:3]) # 获取3到倒数第二的数组,但不包含倒数第二 print(arr[3:-2]) # 传入某个条件 print(arr[arr>3])
(2)多维数据选取
# 多维数据的选取 arr1= np.array([[1,2,3],[4,5,6],[7,8,9]]) print(arr1) # 获取某行数据 # 获取第二行数据 print(arr1[1]) # 获取某些行数据 print(arr1[1:3]) # 获取某列数据 # 获取第二2列数据 print(arr1[:,1]) # 上述代码逗号之前用来指明行位置,逗号之后用来指明列位置,当逗号之前是一个冒号时,表示获取所有的行 # 获取某些列数据,获取第一到第三列的数据,不包括第三列 print(arr1[:,0:2]) # 同时获取 # 获取第1到第2行,第二到第3列的数据 print(arr1[0:2,1:3])
四、Numpy数组的数据预处理
(1)numpy数组的类型转换
import numpy as np arr = np.arange(10) print(arr) # numpy数组的类型转换 # 从int型转换为float型 print(arr.dtype) arr1 = arr.astype(np.float64) print(arr1.dtype) # 从int型转换为str型 arr2 = arr.astype(np.string_) print(arr2.dtype)
(2)numpy数组缺失值的处理
# numpy数组缺失值的处理 # 创建一个含有缺失值的数组 arr3 = np.array([1,2,np.nan,4]) # 第三位为缺失值 print(np.isnan(arr3)) # 用0填充 arr3[np.isnan(arr3)]=0 print(arr3)
(3)numpy数组的重复值处理
# numpy数组的重复值处理 arr4 = np.array([1,2,4,4,5]) print(np.unique(arr4))
五、Numpy数组的重塑
(1)一维数组的重塑
# 数组重塑就是更改数组的形状 # 一维数组的重塑:从一行或一列数组重塑为多行多列 import numpy as np arr = np.arange(8) print(arr) # 重塑成2行4列 print(arr.reshape(2,4)) # 重塑成4行2列 print(arr.reshape(4,2))
(2)多维数组的重塑
# 多维数组的重塑 # 新建一个多维数组 arr1 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) print(arr1) # 将数组重塑为4行3列 print(arr1.reshape(4,3)) # 将数组重塑为2行6列 print(arr1.reshape(2,6))
(3)数组转置
print(arr1.T)
六、Numpy数组的合并
(1)数组的横向合并
# 横向合并 # 先创建两个数组 import numpy as np arr1 = np.array([[1,2,3],[4,5,6]]) arr2 = np.array([[7,8,9],[10,11,12]]) # concatenate方法直接将两个待合并的数组以列表的形式传给concatenate方法,axis=1表示在行方向进行合并 print(np.concatenate([arr1,arr2],axis=1)) # hstack方法直接将两个待合并的数组以元祖的形式传给stack方法,不需要设置axis参数 print(np.hstack((arr1,arr2))) # column_stack方法与hstack方法一样 print(np.column_stack((arr1,arr2)))
(2)数组的纵向合并
# 纵向合并 # concatenate方法直接将两个待合并的数组以列表的形式传给concatenate方法,axis=0表示在列方向进行合并 print(np.concatenate([arr1,arr2],axis=0)) # vstack方法直接将两个待合并的数组以元祖的形式传给stack方法,不需要设置axis参数 print(np.vstack((arr1,arr2))) # row_stack方法与vstack方法一样 print(np.row_stack((arr1,arr2)))
七、Numpy数组的常用数据分析函数
(1)元素级函数
''' 元素级函数:就是对数组中每个元素执行相同的函数操作 abs取每个元素的绝对值 sqrt取每个元素的平方根 square取每个元素的平方 exp计算各个元素的以e为底的指数 log,log10,log2,log1p求对数 modf适用于浮点数 isnan判断是否NaN ''' import numpy as np arr = np.arange(5) print(np.square(arr)) print(np.sqrt(arr))
(2)描述统计级函数
''' 描述统计级函数 sum求和 mean平均值求取 std,var标准差和方差 min,max最大最小值 argmin,argmax最小值和最大值的索引 cumsum所有元素的累计和,结果以数组的形式返回 cumprod所有元素的累计积 ''' arr1 = np.array([[1,2,3],[4,5,6],[7,8,9]]) print(arr1) # 求和 # 对整个数组求和 print(arr1.sum()) # 对数组中的每一行分别求和 print(arr1.sum(axis=1)) # 对数组中的每一列分别求和 print(arr1.sum(axis=0)) # 求均值 # 对整个数组均值 print(arr1.mean()) # 对数组中的每一行分别求均值 print(arr1.mean(axis=1)) # 对数组中的每一列分别求均值 print(arr1.mean(axis=0)) # 求最值 # 对整个数组最大 print(arr1.max()) # 对数组中的每一行分别求最大值 print(arr1.max(axis=1)) # 对数组中的每一列分别求最大值 print(arr1.max(axis=0))
(3)条件函数
''' 条件函数 ''' # 新建一个数组用来存储学生成绩 arr2 = np.array([56,61,65]) # 大于60及格,小于60不及格 print(np.where(arr2>60,'及格','不合格')) #返回满足条件对应的位置 print(np.where(arr2>60))
(4)集合关系
''' 集合关系 ''' arr3 = np.array([1,2,3,4]) arr4 = np.array([1,2,5]) # 包含 print(np.in1d(arr3,arr4)) # 交集 print(np.intersect1d(arr3,arr4)) # 并集 print(np.union1d(arr3,arr4)) # 差集 print(np.setdiff1d(arr3,arr4))