zoukankan      html  css  js  c++  java
  • B站14天数据分析笔记2次课Numpy

    #包导入方法:
    import numpy
    import numpy as np
    from numpy import *
    
        
    
    # 数组与列表的差别
    #数组:元素类型dtype相同 否则会强制类型转换
    a=[1,2,3,4,5]
    [x+1 for x in a]
    b=[2,3,4,5,6,7]
    [c+d for (c,d) in zip(a,b)]#压缩成元组数组
    
    #数组的计算
    a=np.array([1,2,3,4]) # print array([1, 2, 3, 4])
    a+1 #print array([2, 3, 4, 5])
    
    #数组初始化
    l=[1,2,3,4]
    a=np.array(l) #列表生成数组 print array([1, 2, 3, 4])
    np.zeros(10) #生成0数组 都是浮点数 array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
    np.ones(10,dtype='int') #同上 设置类型为int
    a.fill(2.5) #将数组元素都填为2.5 如果原类型为整数 则2.5->2
    a=a.astype('float') #强制类型转换
    
    #随机数数组
    a=np.arange(1,11,2) #起点 终点 步伐 array([1, 3, 5, 7, 9])
    a=np.linspace(1,10,10) #起点 终点 等差数列的元素个数 array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])
    a=np.random.rand(5) #0-1的5个随机数
    a=np.random.randn(5)#正态分布5个随机数
    a=np.random.randint(1,10,6) #1-10 6个随机数
    
    #数组属性
    type(a) #numpy.ndarray n维数组
    a.dtype #元素的数据类型dtype('int32')
    a.shape #形状/行列 (6,)
    a.ndim #维度 1
    
    #数组索引
    a=np.array([0,1,2,3,4,5])
    a[0]
    
    #数组切片与列表相同
    a[1:3]
    
    #多维数组
    a=np.array([[0,1,2,3],[1,2,3,4]])
    a.shape #(2, 4)
    a.ndim #2
    
    #索引
    a[1,2] #第二行 第三列
    a[1,] #索引为1的第二行 的所有列
    a[:,1] #第二行/第二列的所有行
    
    #切片 数组引用机制 使用同一块内存 
    # 列表直接copy备份
    
    a=np.array([1,2,3,4])
    
    b=copy(a[1:3])
    b[1]=9999
    a #不变
    
    b=a[1:3]
    b[1]=9999 
    a #array([   1,    2, 9999,    4])
    
    a=[1,2,3,4]
    b=a[1:3]
    b[1]=9999
    a #[1, 2, 3, 4]
    
    #花式索引
    a=np.arange(0,50,10) #左闭右开 和随机数(闭区间)不同
    index=[1,2,-1]
    y=a[index] 
    y #array([10, 20, 40])
    
    #或者布尔值
    mask=np.array([0,0,2,0,1],dtype=bool)#规模要与原数组相同
    z=a[mask]
    z # array([20, 40])
    
    #where语句
    np.where(a>10) #(array([2, 3, 4], dtype=int64),)
    np.where(True)              #返回索引值元组 默认返回>0的数组索引 (array([0], dtype=int64),)
    
    #数组类型
    a=np.array([1,5,2,3],dtype=float) #初始化类型
    np.asarray(a,dtype=int)#强制类型转换 原数组不变
    b=a.astype(int) #原数组不变 返回新类型的数组
    
    #常用数组操作
    np.sort(a) #从小到大
    np.argsort(a) #返回从小到大排列后的原数组的索引
    a[np.argsort(a)] 
    
    np.max(a)
    np.sum(a)
    np.std(a) #标准差
    np.cov(a,b) #相关系数矩阵
    
    #矩阵操作
    a=np.array([1,5,2,3,5,6],dtype=float)
    a.shape=2,3 #将一维数组变为两行三列 行操作
    a=np.array([1,5,2,3,5,6],dtype=float)
    a.reshape(2,3) #原数组不变 返回新数组
    a.T #转置
    a.transpose() #转置 a不变 返回新数组
    
    #数组之间的操作
    #concantenate((a0,a1,a2,...,aN),axis=0) #n维数组??
    x=np.array([1,2,-3,4,5])
    y=np.array([11,22,33,44,55])
    z=np.array((x,y))
    z
    np.vstack((x,y)) #按列进行堆叠 x与y堆成一列 x作为一行 y作为第二行
    np.hstack((x,y)) #按行堆叠 把上面的转置一下 x作为前5列 y作为后五列
    np.dstack((x,y)) #转化成三维
    
    #内置函数
    np.abs(x)
    np.exp(x)#??e的x次幂
    np.median(x) #求中值
    np.cumsum(x) # 每个元素等于前面所有元素之和
    
  • 相关阅读:
    做了好几年的程序员,才发现自己天天都在用设计模式!
    先搞清楚这些问题,简历上再写你熟悉Java!
    Java中实现多线程继承Thread类与实现Runnable接口的区别
    JAVA中实现多线程的四种方式
    JDK和Cglib动态代理
    Java中选择排序,冒泡排序,插入排序,快速排序
    java死锁详解
    github常用命令
    字符串之StringBuffer 与 StringBuilder的对比
    基础数据类型之AbstractStringBuilder
  • 原文地址:https://www.cnblogs.com/most-silence/p/15495373.html
Copyright © 2011-2022 走看看