numpy_1

作者: Canes | 来源:发表于2020-04-21 18:31 被阅读0次

    ndaray 随机创建

    # 导入numpy, 设置别名为np
    import numpy as np
    
    # 导入matplotlib.pyplot as plt
    import matplotlib.pyplot as plt
    
    # random表示常见随机数,rand表示创建一个随机的浮点数数组,参数的个数表示数组维度的大小
    # 默认区间是 0.0 - 1.0 之间
    arr = np.radom.rand(3,4)
    print(type(arr))
    # ndim 参数表示数组的维度
    print(arr.ndim)
    # shape参数表示数据的大小
    print(arr.shape)
    # dtype表示每个数据的类型
    print(arr.dtype)
    
    
    # 生产一个符合标准正态分布的数组
    arr = np.random.randn(10000)
    plt.hist(arr,bin=100,color='red',alpha=0.5)
    plt.show()
    

    <img src="/Users/mac/Library/Application Support/typora-user-images/image-20200420102516028.png" width = 30% height = 30% />

    # 创建一个3行4列的二维整数数组,每个元素的值区间在 -10~20之间
    arr = np.random.randint(-10,20,size=(3,4))
    print(arr)
    
    # 创建一个3行4列的二维浮点数数组,每个元素的值区间在 -10~20之间
    arr = np.random.uniform(-10,20,size=(3,4))
    print(arr)
    

    ndarray的序列创建

    lis = range(10)
    # 创建一维数组
    arr = np.array(lis)
    print(arr)
    
    # array() 参数可以是多维的数组
    # 表示创建了一个三维数组,数组里包含了两个二维数组
    arr2 = np.array([[lis,lis],[lis,lis]])
    print(arr2)
    
    # 创建一个3行4列的二维全零数组,第二个参数可以指定数据类型
    arr3 = np.zeros((3,4), int)
    print(arr3)
    print(arr3.dtype)
    
    # 创建一个3行4列的二维全1数组,第二个参数可以指定数据类型
    arr4 = np.ones((3,4), int)
    print(arr4)
    
    # 初始化数组,不指定具体数值,起占位符作用
    arr5 = np.empty((3,4), int)
    print(arr5)
    

    ndarray 的arange 和 reshape

    # 等同于先创建一个列表,再使用array方法来创建数组
    arr = np.arrange(10)
    print(arr)
    
    # reshape 调整数组维度,但元素个数的总数不变
    arr2 = arr.reshape(2,5)
    print(arr2)
    
    # 将是个元素的一维数组改变成一个三维数组
    arr3 = arr.reshape(1,2,5)
    print(arr3)
    
    # 随机打乱原数组的序列
    np.random.shuffle(arr)
    print(arr)
    print(arr.reshape(2,5))
    

    数组的数据类型转换

    zeros_float = np.zeros((3,4))
    print(zeros_float)
    
    # 更改数据类型
    zeros_int = zeros_float.astype(np.int32)
    print(zeros_int)
    

    ndarray的矩阵运算

    arr = np.arange(10)
    # 矩阵之间的运算,是按矩阵级的运算,每一个元素和对应索引的运算进行运算
    print(arr * arr)
    print(arr + arr)
    
    # 广播运算,将标量广播到数组的各个元素上
    print(1. + arr)
    print(2 * arr)
    

    ndarray的切片,索引操作

    #1.一维数组的索引和切片操作
    arr1 = np.arange(10)
    print(arr1)
    print(arr1[5:9])
    
    #2.多维数组的索引和切片操作
    arr2 = np.arange(10).reshape(2,5)
    print(arr2)
    # 二维数组的索引和切片操作,[] 里第一个数字表示行所在的索引,第二个数字表示列所在的索引
    print(arr2[1,:3])
    print(arr2[:,:3])
    

    ndarray的条件索引

    #1
    year_arr = np.array([[2010, 2011, 2012],[2001, 2002, 2003],[ 2015, 2016, 2017]])
    print(year_arr)
    # 将数组的每个元素和条件进行匹配,返回匹配结果,为bool值
    after_2005_year = year_arr > 2005
    print(after_2005_year)
    
    arr2 = np.random.randn(3,3)
    # 将bool数组映射到arr2,返回匹配为True的数组,返回的一维数组
    # 筛选数据
    new_arr2 = arr2[after_2005_year]
    new_arr2 = arr2[(year_arr > 2005) & (year_arr < 2015)]
    print(new_arr2)
    

    ndarray的维数转换 transpose()

    # transponse() 转换原数组维度-shape-行列互换,如果是二维数组不需要指定参数
    arr2 = np.random.rand(3,4)
    print(arr)
    print('-----')
    print(arr2.transpose())
    
    # 多维数组(元组的每个元素都是原数组维度数所在的索引的值(原索引从0开始)
    arr3 = np.random.rand(2, 3, 4)
    print(arr3.shape)
    print("-"*20)
    arr4 = arr3.transpose((2, 0, 1))
    print(arr4.shape)
    
    arr = np.random.randn(3,4)
    # 取最接近的比自己大的整数
    print(np.ceil(arr))
    print('*'*10)
    
    # 向下取整,及取比自己小的整数
    print(np.floor(arr))
    
    # 先去掉符号取绝对值,再讲符号添加上
    print(np.round(arr))
    # 四舍五入
    print(np.rint(arr))
    
    # 取绝对值
    print(np.abs(arr))
    
    # nan = not a number 表示不是一个可以用来计算的数值
    # 非数值类型
    num = np.nan
    # 判断是否为nan类型
    print(np.isnan(arr))
    print(np.isnan(num))
    
    # 数组和数组之间每个元素相乘
    result1 = np.multiply(arr,arr)
    result2 = np.multiply(arr[2, 3], arr[0, 1])
    
    # 除法
    div1 = np.divide(arr,arr)
    div2 = np.divide(arr[2,3],arr[0,2])
    
    # 三目运算符,三元运算符
    # 包含三个参数,第一个参数是条件语句,第二个参数是条件为真的返回值,第三个参数是条件为假时候的返回值
    # 返回值用来替换原数组的元素
    print(np.where(arr<0,-1,0))
    

    ndarray的统计函数

    arr = np.random.randint(0,10,(3,4))
    print(arr)
    
    # 求数组里所有元素的平均值
    np.mean(arr)
    
    # 求数组里最大值
    np.max(arr)
    
    # 求数组里最小值
    np.min(arr)
    
    # 衡量数据和期望值之间的偏离值
    # 标准差
    np.std(arr)
    
    # 方差:所有元素与平均数的平方和的平均数
    np.var(arr)
    
    # 求每列或者行的最值索引
    np.argmax(arr) #将多维变一维后,查看最大值的索引(按照行拆解)
    np.argmax(arr,axis=0) #结果保留列数不变,即行与行比较
    np.argmax(arr,axis=1) #结果保留行数不变,即列之间比较,返回一行中的最大值
    
    np.argmin() #参数如上,最小值
    
    # 累加or累乘
    np.cumsum(arr)
    np.cumprod(arr)
    

    元素的判断函数

    arr = np.random.rand(3,4)
    # 存在一个元素满足条件为 True
    np.any(arr>0.5)
    
    # 所有元素满足条件为 True
    np.all(arr>0.5)
    
    

    加载数据

    • loadtxt

      filename = ''
      data_arr = np.loadtxt(filename, # 需要打开的csv文件的文件名
                 delimiter = ",", # csv文件的分隔符
                 dtype=str, # 数据是按编码后的字符串格式存储
                 usecols=(0,2) # 表示读取文件里的列的索引位置
                )
      
    • genfromtxt

      filename = ''
      data_arr = np.genfromtxt(filename, # 需要打开的csv文件的文件名
                 delimiter = ",", # csv文件的分隔符
                 dtype=str, # 按字符串存储数据,不在转换为字节码
                 usecols=(0,2) # 表示读取文件里的列的索引位置
                )
      
      

    相关文章

      网友评论

          本文标题:numpy_1

          本文链接:https://www.haomeiwen.com/subject/khmpihtx.html