• 数据分析与处理 实验二 numpy的基本使用


    1. 实验内容
    (1)numpy的导入。
    (2)数组的基本创建、索引和切片。
    (3)数组维度变换与重塑。
    (4)数组排序。
    (5)数组的组合和分拆。

    2.目的要求
    (1)学会numpy的导入。
    (2)掌握数组的基本创建、索引和切片。
    (3)学会数组维度变换与重塑的操作。
    (4)掌握按照不同维度对数组的排序。
    (5)掌握数组的组合与分拆。

    3.实验方法手段及其条件
    (1)数组的基本创建。
    ① 调用 numpy 的 array 函数创建一维数组a1,一维数组a2(指定dtype为float),二维数组a3以及三维数组a4,如下图所示:
    在这里插入图片描述

    import numpy as np
    a1 = np.array([0, 1, 2, 3, 4, 5, 6, 7])
    a2 = np.array([0, 1, 2, 3, 4, 5, 6, 7], dtype="float")
    a3 = np.array([[0, 1, 2, 3],[4, 5, 6, 7]])
    a4 = np.array([
        [[0, 1], [2, 3]],
        [[4, 5], [6, 7]],
    ])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    ② 定义一个结构化数据类型 xs_struc,包含字符串字段 id、name,整数字段 age及浮点字段 grade,并将这个 dtype 应用到 ndarray对象xs_rec,如下图所示:
    在这里插入图片描述

    xs_struc = np.dtype([('id', np.str_,4),
              ('name', np.str_,10),
              ('age', int),
              ('grade', float)
             ])
    xs_struc
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    xs_rec = np.array([('1001', 'zhangsan', 20, 90.,)
              ,('1002', 'lisi', 21,88.),
              ('1000', 'wangwu', 20,91.)], dtype=xs_struc)
    xs_rec
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    ③ 使用np.arange()函数快速创建以下两个数组:第1个是含0-9数值的数组,第2个是从2开始,100以内,等差值为10的数组,如下图所示:
    在这里插入图片描述

    np.arange(0,10)
    
    • 1
    np.arange(2,100,10)
    
    • 1

    在这里插入图片描述

    ④ 创建形状为(3,4),dtype=int的全0数组,如下图所示:
    在这里插入图片描述

    np.zeros((3, 4), dtype=int)
    
    • 1

    在这里插入图片描述

    (2)编写程序完成数组a1、a3和a4维度变换与重塑的操作。

    a1 = np.array([0, 1, 2, 3, 4, 5, 6, 7])
    a3 = np.array([[0, 1, 2, 3],[4, 5, 6, 7]])
    a4 = np.array([
        [[0, 1], [2, 3]],
        [[4, 5], [6, 7]],
    ])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ① 使用ndim查看各数组的维度,输出结果分别为1 2 3。

    print(a1.ndim, a3.ndim, a4.ndim)
    
    • 1

    在这里插入图片描述

    ② 分别使用reshape()方法和resize()函数将a3转化为形状为(4,2)的数组b31和b32,输出结果如下图所示:

    在这里插入图片描述

    b31 = a3.reshape(4,2)
    b31
    
    • 1
    • 2
    b32 = np.resize(a3,(2,2,2))
    b32
    
    • 1
    • 2

    在这里插入图片描述

    ③ 分别使用ravel()函数、flatten()和reshape()方法将数组a4展平,输出结果如下图所示:

    在这里插入图片描述

    np.ravel(a4)
    a4.flatten()
    a4.reshape(1,1,-1)
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    (3)编写程序完成数组a3、a4和xs_rec的索引切片操作。
    ① 使用整数索引,获取数组a3中如图所示的元素,输出结果为[6]。

    在这里插入图片描述

    a3[1][2]
    
    • 1

    在这里插入图片描述

    ② 使用整数数组索引,获取数组a4中如图所示的元素,输出结果为[2 1]。

    a4[[0],[1,0],[0,1]]
    
    • 1

    在这里插入图片描述

    ③ 使用布尔索引,获取数组a4中大于5的元素,输出结果为[6 7]。

    a4[a4>5]
    
    • 1

    在这里插入图片描述

    ④ 使用字段名索引,获取数组xs_rec中lisi的学号、年龄和分数,输出结果为1002 21 88.0。

    print(*xs_rec[xs_rec['name'] == 'lisi'][['id', 'age', 'grade']][0])
    
    • 1

    在这里插入图片描述

    (4)对以下语句生成的数组a5分别按行和列排序,输出结果如下图所示:
    a5=np.array([2,13,72,44,62,3,6,456,24,7,85,93,89,5]).reshape(7,2)
    在这里插入图片描述

    a5.sort(axis=1)
    a5.sort(axis=0)
    
    • 1
    • 2

    在这里插入图片描述

    (5)对以下语句生成的两个二维数组按要求进行组合与分拆。
    arr1 = np.arange(6).reshape((3, 2))
    arr2 = np.array([[0, 1], [1, 0], [2, 1]])
    在这里插入图片描述

    ① 对arr1和arr2完成水平拼接和垂直拼接,输出结果如下图所示:
    在这里插入图片描述

    np.hstack((arr1,arr2)) # 水平
    np.vstack((arr1,arr2)) # 垂直
    
    • 1
    • 2

    在这里插入图片描述

    ② 对arr1和arr2在0轴和1轴上分别完成拼接,输出结果如下图所示:
    在这里插入图片描述

    np.concatenate((arr1,arr2),axis=0)
    np.concatenate((arr1,arr2),axis=1)
    
    • 1
    • 2

    在这里插入图片描述

    ③ 对arr1完成水平分拆和垂直分拆,输出结果如下图所示:
    在这里插入图片描述

    np.hsplit(arr1,2)
    np.vsplit(arr1,3)
    
    • 1
    • 2

    在这里插入图片描述

    ④ 对arr1在0轴和1轴上分别完成分拆,输出结果如下图所示:

    np.split(arr1,2,axis=1)
    np.split(arr1,3,axis=0)
    
    • 1
    • 2

    在这里插入图片描述

  • 相关阅读:
    网络安全分析——蠕虫病毒动态分析视图
    张量的基本概念+张量的聚合、拼接、比较、随机化采样、序列化等操作+升维、降维
    计数类双指针总结
    html--蛆
    python subprocess 起来的进程怎么查看是否正在运行
    解决mysql表不能查询修改删除等操作并出现卡死
    【Java八股文总结】之Java设计模式
    Python爬虫乱码问题之encoding和apparent_encoding的区别
    GAN入门|第二篇:人脸图像生成(DCGAN)
    C#参数修饰符params
  • 原文地址:https://blog.csdn.net/okfang616/article/details/127572387