numpy
-----numpy 1--------
np.array(列表或元组,dtype) #创建数组
np.arange(s,e,d) #创建等差数列,s 表头元素,e表尾元素,d 公差
np.linspace(s,e,n) #等差数列,s 表头元素,e表尾元素,n元素个数
np.linspace(s,e,n,endpoint=False) # 按 n+1 个元素进行计算,然后最后一个不要
np.logspace(s,e,base=c,num=n) #等比数列,底为c ,幂为等差数列
np.zeros(5) 或 np.zeros([3,4]) #零阵 1x5, 3x4
np.ones(5) 或 np.ones([3,4]) # 1阵 1x5,3x4
np.eye(6) #对角线全为1 的对角阵
np.diag([1,2,3,4,5]) #对角线为1,2,3,4,5的对角阵
arr.shape #数组形状,
arr.ndim #数组维度
arr.size #元素个数
arr.dtype #元素类型
------numpy 2-------
arr[::-1] #逆序
arr2=arr1 #视图赋值,arr2改变,arr1也会改变
arr2=arr1.copy() #视图赋值,arr2和arr1没有关系
arr[arr>5] , arr[~(arr>5)] , arr[(arr>3) & (arr<5)] , arr[(arr>3) | (arr<1)]
arr[[0,-1]][:,[1,3]] arr1[np.ix_([0,-1],[1,3])] #选择特定行,列
------numpy 3 -------
arr.reshape(10,2) #只会改变视图的形状,原数据不变
arr.resize(10,2) #原数据的形状改变
arr.ravel() #降为一维,默认按行
arr.ravel(order='F') #降为一维,按列
arr.flatten() #降为一维,默认按行
arr.flatten(order='F') #降为一维,按列
arr.reshape(-1,2) #列数为2,行数自动计算
arr.flatten()[1]=1000 #原数据不变
arr.ravel()[1]=1000 #原数据改变
arr.reshape(-1)[3]=1000 #原数据改变
arr[np.newaxis,:] #增加一个维度
np.hstack([arr2,arr3]) #按横轴 合并,行数不变,增加列数
np.vstack([arr2,arr3]) #按纵轴 合并,列数不变,增加行数
np.floor(arr) #向下取整
np.ceil(arr) #向上取整
np.concatenate([arr2,arr3],axis=1) #按横轴合并 行数不变,增加列数
np.concatenate([arr2,arr3],axis=0) #按纵轴合并 列数不变,增加行数
np.tile(arr,[3,4]) # 行复制3次,列复制4次
--------numpy 4---------
总结:广播运算机制
一维数组,广播运算时,按照行对齐方式,当 行数不一致时,首先补齐行数,然后进行运算。
二维数组,广播运算时,当列数不一致时,首先补齐列数, 然后进行运算,当 行数不一致时,首先补齐行数,然后进行运算。
arr1+arr2 , np.add(arr1,arr2) #数组加法
arr1-arr2 , np.subtract(arr1,arr2) #数组减法
arr1/arr2 , np.divide(arr1,arr2) #数组除法
arr1*arr2 , np.multiply(arr1,arr2) #数组乘法
np.power(arr,5) # 幂 运算
arr.astype('int') # 元素类型转换
np.array(np.random.rand(12)*10+1,dtype='int') # 结合取整
np.unique(arr) #去重
np.in1d(arr1,arr2) #arr1的元素是否在 arr2中
np.intersect1d(arr1,arr2) #交集
np.union1d(arr1,arr2) #并集
arr1==arr2 , np.equal(arr1,arr2) #是否相等
arr1>arr2 , np.greater(arr1,arr2) #是否大于
np.nan #空值
np.isnan(arr) #是否为空值
--------numpy 5--------
np.fmax(arr1,arr2) #取最大值
np.fmin(arr1,arr2) #取最小值
np.sort(arr) #升序,原数据不变
arr.sort() #升序,原数据改变
sorted(arr) #升序,原数据 不变
sorted(arr,reverse=True) #降序
np.argsort(arr) #升序,返回下标
arr.argmax() #返回最大值下标
arr.argmin() #返回最小值下标
arr.argmax(axis=1) #沿横轴,取最大值下标
arr.argmin(axis=1) #沿横轴,取最小值下标
np.where(a,b,c) # a 为True,返回 b,否则 为 c
np.extract(arr1>arr2,arr1) 若为True,则输出对应位置 的arr1
--------numpy 6-------
np.genfromtxt(r'E:\数据分析\data\demo3.txt',delimiter=',',dtype='int',skip_header=1)
np.loadtxt(r'E:\数据分析\data\demo3.txt',delimiter=',')
np.savetxt('E:\数据分析\data\demo6.csv',data,delimiter=',',fmt='%.4f')
--------numpy 7-------
np.char.upper(arr) #大写
np.char.lower(arr) #小写
np.char.add(['中国','国庆'],['海军','大阅兵']) #对应字符串拼接 ['中国海军', '国庆大阅兵']
np.char.multiply(['中国','万岁'],3) #字符串翻倍 ['中国中国中国', '万岁万岁万岁']
np.char.join([':','-'],['hello','world']) #字符串分割 ['h:e:l:l:o', 'w-o-r-l-d']
np.char.replace(arr,a,b) #用b 替换arr中元素中的a
np.char.strip(arr,'-') #清除特定字符 -
f=open(r'E:\数据分析\data\demo7.txt',encoding='utf-8').readlines()
arr=f[3].split('\t')
np.char.rstrip(arr,'\n') #右部清除
np.char.find(arr,'f') #寻找索引
np.char.islower(arr) #是否是 小写
np.char.isupper(arr) #是否是大写
np.char.isdigit(arr) #是否是数字
np.char.isalpha(arr) #是否是 字符
np.char.count(arr,'s') #统计出现s 的次数
np.char.startswith(arr,'s') #是否以s开始
np.char.endswith(arr,'s') #是否以 s结束
--------numpy 8--------
np.random.random() ,np.random.random([3,4]) #随机产生0到1之间的浮点数
np.random.seed(10) #种子
np.random.rand(10,15) #等概率,产生0到1之间的浮点数
np.random.randint(-10,100,size=[5,6]) #产生范围内的随机整数
np.random.uniform(low=-10,high=100,size=[3,4]) #产生范围内的随机数
np.set_printoptions(precision=5,suppress=True) #精度5,数据格式压缩
np.random.normal(1,3,size=[3,4]) #正态分布 参数:均值为 1,标准差为 3
np.mean() #均值
np.std() #标准差
np.random.randn(3,4) #标准正态分布
np.random.normal(size=[3,4]) #默认为标准正态分布
np.random.shuffle(arr) #数组元素随机排序,原数据改变
np.random.permutation(arr) #数组元素随机排序,原数据不变
--------numpy 9--------
arr.sum() #求和
arr.sum(axis=1) #沿横轴求和
arr.mean(axis=0) #沿纵轴,对每一列求平均
arr.cumsum() #累计求和
arr.cumsum(axis=0) #沿 纵轴求和
arr.cumprod() #累计求积
arr.cumprod(axis=0) #沿纵轴 累计求积
np.percentile(arr,30) , np.percentile(arr,[0,10,20,50,80,100]) #百分位数,0取最小,100取最大,50取中位数
np.median(arr) #取中位数
np.ptp(data) #极差,即 最大值 - 最小值
data.ptp(axis=0) #沿 纵轴 取极差