zoukankan      html  css  js  c++  java
  • Python内置模块02

    numpy

    numpy:专门用来做数组(矩阵)的运算

    import numpy as np
    
    # numpy数组
    arr = np.array([1, 2, 3])  # 一维的numpy数组
    arr2 = np.array([[1, 2, 3], [4, 5, 6]])  # 二维的numpy数组(一般就是二维)
    # 三维的不使用numpy模块,使用tensorflow/pytorch模块
    
    # 属性
    '''
    T  数组的转置(对高维数组而言)
    dtype  数组元素的数据类型
    size   数组元素的个数
    ndim   数组的维数
    shape  数组的维度大小(以元组形式)
    astype 类型转换
    '''
    
    # 切片
    arr2 = np.array([[1, 2, 3], [4, 5, 6]])
    print('arr2', arr2)  # 二维的numpy数组(一般就是二维)
    print('arr2[:, :]', arr2[:, :])  # 第一个冒号表示行,第二个冒号表示列,顾头不顾尾
    print('arr2[0:1, :]', arr2[0:1, :])
    print('arr2[0:1, 0:1]', arr2[0:1, 0:1])
    print('arr2[0, :]', arr2[0, :])
    print('arr2[0, 0], type(arr2[0, 0])', arr2[0, 0], type(arr2[0, 0]))
    print('arr2[0, [0, 2]]', arr2[0, [0, 2]])
    print('arr2[0, 0] + 1', arr2[0, 0] + 1)
    
    # 修改值
    arr2 = np.array([[1, 2, 3], [4, 5, 6]])  # 可变数据类型
    print(arr2)  # 二维的numpy数组(一般就是二维)
    arr2[0, :] = 0
    print(arr2)
    arr2[1, 1] = 1
    print(arr2)
    arr2[arr2 < 3] = 3  # 布尔取值
    print(arr2)
    
    # 合并
    arr1 = np.array([[1, 2, 3], [4, 5, 6]])  # 可变数据类型
    print(arr1)
    arr2 = np.array([[7, 8, 9], [10, 11, 12]])  # 可变数据类型
    print(arr2)
    
    print(np.hstack((arr1,arr2)))  # 行合并
    print(np.vstack((arr1,arr2)))  # 列合并
    
    print(np.concatenate((arr1, arr2)))  # 默认列合并
    print(np.concatenate((arr1, arr2),axis=1))  # 1表示行;0表示列
    
    # 通过函数创建numpy数组
    arr = np.array([[1, 2, 3], [4, 5, 6]])  # 可变数据类型
    
    print(np.zeros((5, 5)))  # 生成五行五列数值为0的二维数组
    print(np.ones((5, 5)) * 100)  # 生成五行五列数值为100的二维数组
    
    # 数组运算
    # +-*/ // % **
    
    # numpy随机数
    print(np.random.rand(3, 4))
    print(np.random.randint(1, 10, (3, 4)))  ## 最小值1,最大值10,3*4
    

    pandas模块

    # pandas基于Numpy,主要用来处理表格数据
    import pandas as pd
    import numpy as np
    
    dates = pd.date_range('20190101', periods=6, freq='M')
    values = np.random.randint(1, 10, (6, 4))
    columns = ['c1', 'c2', 'c3', 'c4']
    
    # 生成DataFrame数据结构
    df =pd.DateFrame(values, index=dates, columns=columns)
    # 属性
    '''
    T  数组的转置(对高维数组而言)
    dtype  数组元素的数据类型
    size   数组元素的个数
    ndim   数组的维数
    shape  数组的维度大小(以元组形式)
    astype 类型转换
    '''
    
    # 排序
    df = df.sort_index(axis=1)  # 0表示列,1表示行
    df = df.sort_values('c3')
    
    # 取值
    df['c1']
    df[['c1', 'c3']]
    df.loc['2019-01-31': '2019-02-28']  # 按行取值
    df.values[1, 1]  # 按值取值,第二行第二列
    df[df['c1']>3]
    
    # 替换值
    df.iloc[1,1] = 1
    
    # pandas操作表格
    from io import StringIO
    
    test_data = '''
    5.1,,1.4,0.2
    4.9,3.0,1.4,0.2
    4.7,3.2,,0.2
    7.0,3.2,4.7,1.4
    6.4,3.2,4.5,1.5
    6.9,3.1,4.9,
    ,,,
    test_data = StringIO(test_data)  # 把test_data读入内存中相当于变成文件
    
    df = pd.read_csc('test.csv', header=None)  # 读取文件
    df.columns = ['c1', 'c2', 'c3', 'c4']
    df.index = ['nick', 'jason', 'tank']
    
    df.to_csv('test1.csv')
    

    matplotlib模块

    matplotlib是一个绘图库,它可以创建常用的统计图,包括条形图、箱型图、折线图、散点图、饼图和直方图。

    import matplotlib.pyplot as plt  # 默认支持英文,不支持中文
    from matplotlib.font_manager import FontProperties
    font = Fontproperties(fname='D:msyh.ttc')
    
    # 条形图
    classer = ['3班', '4班', '5班', '6班']
    students = [50, 60, 55, 67]
    ind = range(len(classes))
    
    plt.bar(ind, students, color='r')
    plt.xticks(ind, classer, fontproperties=font)
    plt.show()
    
    # 直方图
    import numpy as np
    mu1, mu2, sigma = 50, 100, 10
    x1 = mu1 + sigma * np.random.randn(10000)
    x2 = mu2 + sigma * np.random.randn(10000)
    
    plt.hist(x1, bins=50)  # 每50个数据一根柱子
    plt.show()
    
    # 折线图
    plt.plot(x1,marker='o',color='r',label='红线',linestyle='--')
    plt.plot(x2,marker='*',color='y',label='黄线',linestyle='-.')
    plt.plot(x3,marker='s',color='green',label='绿色',linestyle=':')
    plt.plot(x4,marker='x',color='b',label='蓝色',linestyle='-')
    x1 = np.random.randn(1,40).cumsum()
    x2 = np.random.randn(1,40).cumsum()
    x3 = np.random.randn(1,40).cumsum()
    x4 = np.random.randn(1,40).cumsum()
    
    plt.legend(prop=font)  # label的字体的需要在这里换
    plt.show()
    
  • 相关阅读:
    Spring Boot 结合 Redis 序列化配置的一些问题
    基于SpringBoot的代码在线运行的简单实现
    将Spring实战第5版中Spring HATEOAS部分代码迁移到Spring HATEOAS 1.0
    用Spring Security, JWT, Vue实现一个前后端分离无状态认证Demo
    使用最新AndroidStudio编写Android编程权威指南(第3版)中的代码会遇到的一些问题
    C# 内存管理优化畅想----前言
    C# 内存管理优化实践
    C# 内存管理优化畅想(三)---- 其他方法&结语
    C# 内存管理优化畅想(二)---- 巧用堆栈
    C# 内存管理优化畅想(一)---- 大对象堆(LOH)的压缩
  • 原文地址:https://www.cnblogs.com/17vv/p/11377306.html
Copyright © 2011-2022 走看看