实验二 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,如下图所示: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bAl69Sht-1669126646605)(experiment-02-two-pic/01.png)]

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

② 定义一个结构化数据类型 xs_struc,包含字符串字段 id、name,整数字段 age及浮点字段 grade,并将这个 dtype 应用到 ndarray对象xs_rec,如下图所示: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-owoNQuAo-1669126646605)(experiment-02-two-pic/02.png)]

xs_struc = np.dtype([('id',np.str_,4),('name',np.str_,10),('age',np.int8),('grade',np.float32)])
xs_struc
dtype([('id', '<U4'), ('name', '<U10'), ('age', 'i1'), ('grade', '<f4')])
xs_rec=np.array ([('1001','zhangsan',20,90.),('1002','1isi',21,88.),('1000','wangwu',20,91.)],dtype=xs_struc)
xs_rec
array([('1001', 'zhangsan', 20, 90.), ('1002', '1isi', 21, 88.),('1000', 'wangwu', 20, 91.)],dtype=[('id', '<U4'), ('name', '<U10'), ('age', 'i1'), ('grade', '<f4')])

③ 使用np.arange()函数快速创建以下两个数组:第1个是含0-9数值的数组,第2个是从2开始,100以内,等差值为10的数组,如下图所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D2tBsglD-1669126646606)(experiment-02-two-pic/03.png)]

a=np.arange(0,10,1)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a=np.arange(2,100,10)
a
array([ 2, 12, 22, 32, 42, 52, 62, 72, 82, 92])

④ 创建形状为(3,4),dtype=int的全0数组,如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aPKF2FHW-1669126646606)(experiment-02-two-pic/04.png)]

m=np.zeros ((3,4),dtype=int)
m
array([[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]])
(2)编写程序完成数组a1、a3和a4维度变换与重塑的操作。

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

print(a1.ndim,a3.ndim,a4.ndim)
1 2 3

② 分别使用reshape()方法和resize()函数将a3转化为形状为(4,2)的数组b31和b32,输出结果如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M8wKF2gn-1669126646607)(experiment-02-two-pic/05.png)]

b31=np.reshape(a3,(4,2))
b31
array([[0, 1],[2, 3],[4, 5],[6, 7]])
b32=np.resize(a3,(4,2))
b32
array([[0, 1],[2, 3],[4, 5],[6, 7]])

③ 分别使用ravel()函数、flatten()和reshape()方法将数组a4展平,输出结果如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZWVP76Jt-1669126646607)(experiment-02-two-pic/06.png)]

a4.ravel()
array([0, 1, 2, 3, 4, 5, 6, 7])
a4.flatten()
array([0, 1, 2, 3, 4, 5, 6, 7])
a4.reshape(1,1,8)
array([[[0, 1, 2, 3, 4, 5, 6, 7]]])
(3)编写程序完成数组a3、a4和xs_rec的索引切片操作。

① 使用整数索引,获取数组a3中如图所示的元素,输出结果为[6]。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u8zhs4aO-1669126646607)(experiment-02-two-pic/07.png)]

print(a3[1,2])
6

② 使用整数数组索引,获取数组a4中如图所示的元素,输出结果为[2 1]。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AWHitNGz-1669126646608)(experiment-02-two-pic/08.png)]

[a4[0,1,0],a4[0,0,1]]
[2, 1]

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

print(a4[a4>5])
[6 7]

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

xs_rec[1][['id','age','grade']]
('1002', 21, 88.)
xs_rec[1]['id'],xs_rec[1]['age'],xs_rec[1]['grade']
('1002', 21, 88.0)
(4)对以下语句生成的数组a5分别按行和列排序,输出结果如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WDQrBPvh-1669126646608)(experiment-02-two-pic/10.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-clULNbry-1669126646608)(experiment-02-two-pic/09.png)]

a5=np.array([2,13,72,44,62,3,6,456,24,7,85,93,89,5]).reshape(7,2)
a5
array([[  2,  13],[ 72,  44],[ 62,   3],[  6, 456],[ 24,   7],[ 85,  93],[ 89,   5]])
a5.sort(axis=1)#行
a5
array([[  2,  13],[ 44,  72],[  3,  62],[  6, 456],[  7,  24],[ 85,  93],[  5,  89]])
a5=np.array([2,13,72,44,62,3,6,456,24,7,85,93,89,5]).reshape(7,2)
a5.sort(axis=0)
a5
array([[  2,   3],[  6,   5],[ 24,   7],[ 62,  13],[ 72,  44],[ 85,  93],[ 89, 456]])
(5)对以下语句生成的两个二维数组按要求进行组合与分拆。
arr1 = np.arange(6).reshape((3, 2))
arr1
array([[0, 1],[2, 3],[4, 5]])
arr2 = np.array([[0, 1], [1, 0], [2, 1]])
arr2
array([[0, 1],[1, 0],[2, 1]])

① 对arr1和arr2完成水平拼接和垂直拼接,输出结果如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DAhjqtif-1669126646609)(experiment-02-two-pic/12.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9laEUmZ3-1669126646609)(experiment-02-two-pic/11.png)]

  • 数组的分割主要有:
    1.水平分割:np.split(arr,n,axis=1) 或 np.hsplit(arr,n)
    2.垂直分割:np.split(arr,n,axis=0) 或 np.vsplit(arr,n)
np.vstack((arr1,arr2))#垂直拼接
array([[0, 1],[2, 3],[4, 5],[0, 1],[1, 0],[2, 1]])
np.hstack((arr1,arr2))
array([[0, 1, 0, 1],[2, 3, 1, 0],[4, 5, 2, 1]])

② 对arr1和arr2在0轴和1轴上分别完成拼接,输出结果如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WuU595jz-1669126646609)(experiment-02-two-pic/13.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yXVA64Oq-1669126646609)(experiment-02-two-pic/12.png)]

np.concatenate((arr1,arr2),axis=0)
array([[0, 1],[2, 3],[4, 5],[0, 1],[1, 0],[2, 1]])
np.concatenate((arr1,arr2),axis=1)
array([[0, 1, 0, 1],[2, 3, 1, 0],[4, 5, 2, 1]])

③ 对arr1完成水平分拆和垂直分拆,输出结果如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JdiI5W6K-1669126646610)(experiment-02-two-pic/15.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Cx5snS7-1669126646610)(experiment-02-two-pic/16.png)]

b=np.hsplit(arr1,2)
print(b)
[array([[0],[2],[4]]), array([[1],[3],[5]])]
np.vsplit(arr1,3)
[array([[0, 1]]), array([[2, 3]]), array([[4, 5]])]

④ 对arr1在0轴和1轴上分别完成分拆,输出结果如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bAwUrzEI-1669126646610)(experiment-02-two-pic/17.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1bLSoB1C-1669126646610)(experiment-02-two-pic/18.png)]

np.split(arr1,3,axis=0)
[array([[0, 1]]), array([[2, 3]]), array([[4, 5]])]
b=np.split(arr1,2,axis=1)
print(b)
[array([[0],[2],[4]]), array([[1],[3],[5]])]

experiment-02-实验二 numpy的基本使用相关推荐

  1. 【神经网络实验】Numpy手写多层神经网络

    引言 这个作业的目的是给你们介绍建立,训练和测试神经系统网络模型.您不仅将接触到使用Python包构建神经系统网络从无到有,还有数学方面的反向传播和梯度下降.但在实际情况下,你不一定要实现神经网络从零 ...

  2. 数据库原理实验二 数据库管理 实验报告

    广州大学学生实验报告实验二:数据库管理 此篇分享仅供参考学习,图文禁复制,勿作他用!谢谢配合! 数据库原理实验之实验二:数据库管理 软件:Oracle SQL Developer 今天实验才刚开始,花 ...

  3. python语言基础实验_实验二Python语言基础函数包练习.doc

    实验二Python语言基础函数包练习 实验 Python语言基础函数包练习:1208 学号: 实验目的 1.Python语言包,如math.NumPySciPy和Matplotlib等函数包的使用实验 ...

  4. c语言 k最近邻分类算法代码,实验二 K-近邻算法及应用

    实验二 K-近邻算法级应用 一.实验目的 1.理解K-近邻算法原理,能实现算法K近邻算法: 2.掌握常见的距离度量方法: 3.掌握K近邻树实现算法: 4.针对特定应用场景及数据,能应用K近邻解决实际问 ...

  5. matlab建立二阶开环系统仿真图,实验二 Simulink仿真实验

    实验二 Simulink仿真实验 一. 实验目的: 1.学会使用Matlab软件中的Simulink仿真工具. 2.了解二阶系统瞬态响应指标的意义其计算. 二. 实验内容及原理 1. 用Matlab仿 ...

  6. 广州大学机器学习与数据挖掘实验二

    实验二 逻辑回归与朴素贝叶斯分类 一. 实验目的 本实验课程是计算机.人工智能.软件工程等专业学生的一门专业课程,通过实验,帮助学生更好地掌握数据挖掘与机器学习相关概念.技术.原理.应用等:通过实验提 ...

  7. 【Java程序设计】Java上机实验(二)

    实验二.数组     一.实验目的: 1.学会使用一维与二维数组管理简单数据. 2.学会编写简单的菜单驱动(命令行式)的Java程序 二.实验环境: BLUEJ 三.实验内容: (写出主要的内容) 1 ...

  8. 《Python语言程序设计》实验二

    <Python语言程序设计>实验二 一.实验项目:Python语言序列数据结构2 1.字典运算及应用 2.集合运算及应用 3.可迭代对象应用 4.理解并运用内置函数enumerate(), ...

  9. 大数据先导实践实验二

    实验二:大数据的处理 实验内容: 在本次实验中,请在k-mean算法.DBSCAN算法中选择任意一种算法完成聚类任务,并对于聚类结果实现可视化. 实验总体流程: (1)完成对于pathbased.sp ...

最新文章

  1. L - Subway POJ - 2502
  2. mysql防止从节点可写数据_mysql 主从数据不一致 Slave_SQL_Running: No 解决方法
  3. php 不等待返回的实现方法(异步调用)
  4. LTE/NR用户接入过程笔记
  5. [转载]项目风险管理七种武器-孔雀翎
  6. cleanmymac能够很方便的清理mac上面没用的软件,尤其是这个清理大文件的功能
  7. Centos7搭建Kubernetes集群
  8. Searchsploit
  9. [转载]图的割点、桥与双连通分支
  10. 数据结构与算法--图论最短路径算法应用-词阶求解
  11. 鸿蒙将至,安卓安否?
  12. 《以截屏为基础的演示文档制作软件》(ScreenSteps Pro)更新v2.9.1/含注册机[压缩包]...
  13. Bailian2870 求矩阵的加法【矩阵】
  14. python入门基本知识
  15. chrome插件“京东商品佣金助手”之京东云java web环境搭建(二)
  16. mysql数据库建表的作用_浅谈(SQL Server)数据库中系统表的作用
  17. 安装Centos系统时选择安装的包
  18. python中oserror winerror,在python中将WindowsError转换为OSError
  19. 悼念打dota的日子
  20. 灵活使用 console 让 js 调试更简单

热门文章

  1. mybatis:通过参数传表名、select字段
  2. 学习C语言第八天——switch语句
  3. linux查看磁盘条带,Linux_LVM_详解_03 线性和条带
  4. ubuntu安装双cuda,并进行切换
  5. GO的安装以及GoLand的配置
  6. 【模板函数的使用详解】
  7. canal下载 linux_Canal入门
  8. 【U8+】登录客户端未能加载文件或程序集
  9. 一个真实的故事--关于职业 1
  10. 拖拽排序插件sortable