numpy操作

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) #沿 纵轴 取极差

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值