Python机器学习实验 数据处理之Numpy

news2024/12/24 3:29:01

一、实验目的

1. 了解numpy库的基本功能

2. 掌握Numpy库的对数组的操作与运算

二、实验工具:

1. Anaconda

2. Numpy

三、Numpy简介

Numpy 的英文全称为 Numerical Python,指Python 面向数值计算的第三方库。Numpy 的特点在于,针对 Python 内建的数组类型做了扩充,支持更高维度的数组和矩阵运算,以及更丰富的数学函数。Numpy 是 Scipy.org 中最重要的库之一,它同时也被 Pandas,Matplotlib 等我们熟知的第三方库作为核心计算库。

NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。

Numpy包括了:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。Numpy和稀疏矩阵运算包scipy配合使用更加方便。

四、实验内容

1. 数组的创建(创建全0数组,全1数组,随机数数组)

#数组的创建(创建全0数组,全1数组,随机数数组)

import numpy as np
a=np.zeros(5)
b=np.ones(5)
c=np.random.randint(0,5)
print(a,b,c)

2. 数组的属性(查看数组的维度,数组元素的个数)

#数组的属性(查看数组的维度,数组元素的个数)

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a.shape)
print(a.size)

3. 数组的维度操作(将数组的行变列,返回最后一个元素,返回第2到第4个元素,返回逆序的数组)

a=np.array([[1,2,3],[4,5,6]])

#数组的维度操作(将数组的行变列,返回最后一个元素,返回第2到第4个元素,返回逆序的数组)

import numpy as np
a=np.array([[1,2,3],[4,5,6]])
print(a.T)
print(a[-1])
print(a[1:4])
print(a[::-1])

4. 数组的合并(数组的水平合并,垂直合并,深度合并)

a=np.arange(9).reshape(3,3)

b=np.arange(9).reshape(3,3)

#数组的合并(数组的水平合并,垂直合并,深度合并)
import numpy as np
a=np.arange(9).reshape(3,3)
b=np.arange(9).reshape(3,3)
c=np.hstack((a,b))
print(c)
d=np.vstack((a,b))
print(d)
e=np.dstack((a,b))
print(e)

5. 数组的拆分(数组的水平拆分,垂直拆分,深度拆分)

a=np.arange(27).reshape(3,3,3)

#数组的拆分(数组的水平拆分,垂直拆分,深度拆分)
import numpy as np
a=np.arange(27).reshape(3,3,3)
c=np.hsplit(a,3)
print(c)
d=np.vsplit(a,3)
print(d)
e=np.dsplit(a,3)
print(e)

6. 数组运算(与常的四则运算,与数组的四则运算,判断数组是否相等)

a=np.arange(4,dtype=np.float32).reshape(2,2)

b=np.arange(4,8,dtype=np.float32).reshape(2,2)

#数组运算(与常的四则运算,与数组的四则运算,判断数组是否相等)
import numpy as np
a=np.arange(4,dtype=np.float32).reshape(2,2)
b=np.arange(4,8,dtype=np.float32).reshape(2,2)
constant=5
print(a+constant)
print(a-constant)
print(a*constant)
print(a/constant)
print(a+b)
print(a-b)
print(a*b)
print(a/b)
print(a==b)
print(a!=b)

7. 数组的常用函数(数组所有元素的和、积、平均值、最大值、最小值、元素替换、方差、标准差)

a=np.array([3,2,4])

#数组的常用函数(数组所有元素的和、积、平均值、最大值、最小值、元素替换、方差、标准差)
import numpy as np
a=np.array([3,2,4])
print(np.sum(a))
print(np.prod(a))
print(np.mean(a))
print(np.max(a))
print(np.min(a))
a[0]=10
print(a)
print(np.std(a))
print(np.var(a))

8.创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1

#创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1
import numpy as np
a=np.zeros(10)
a[4]=1
print(a)

9.运行以下代码,理解每句代码的意思或输出结果(print 语句):

(a)

mysqrt = [math.sqrt(x) for x in range(0,5)]

mycrt = [x**(1/3) for x in range(0,5)]

npData = np.array(mysqrt)

print(“The shape:”, npData.shape)

print(“The dimensionality:”, npData.ndim)

print(“The type:”, npData.dtype)

twoDarray = np.array([mysqrt, mycrt])

print(“The shape:”, twoDarray.shape)

print(“The dimensionality:”, twoDarray.ndim)

print(“The type:”, twoDarray.dtype)

(b)

zeros = np.zeros(3)

zMat = np.zeros((4,3))

ones = np.ones(3)

oMat = np.ones((3,2))

diag = np.eye(4)

rng = np.arange(5)

dm = np.diag(rng)

print(dm.shape)

zMat_re = zMat.reshape(6,2)

Print(zMat_re)

( c )

A = np.random.randint(0,10, size = (3,2))

B = np.random.randint(0,10, size = (3,3,3))

C = np.random.randint(0,10, size = (3,1))

print(A**2)

print(np.sqrt(A))

print(A + C)

print(B + C)

B[:, 0:2 , 0:2 ] -= 20

print(B)

10. 给定一个矩阵 2n×2n,将该矩阵分成四个象限(参见示例),然后返回一个新的 2×2 矩阵,包含每个象限的平均值。

例子:

#给定一个矩阵 2n×2n,将该矩阵分成四个象限,然后返回一个新的 2×2 矩阵,包含每个象限的平均值。
import numpy as np


def quadrant_averages(matrix):
    # 检查输入矩阵的维度
    if matrix.shape[0] != matrix.shape[1] or matrix.shape[0] % 2 != 0:
        raise ValueError("输入矩阵必须是2n×2n的维度")

    n = matrix.shape[0] // 2

    # 分割矩阵为四个象限
    q1 = matrix[:n, :n]
    q2 = matrix[:n, n:]
    q3 = matrix[n:, :n]
    q4 = matrix[n:, n:]

    # 计算每个象限的平均值
    avg_q1 = np.mean(q1)
    avg_q2 = np.mean(q2)
    avg_q3 = np.mean(q3)
    avg_q4 = np.mean(q4)

    # 返回包含每个象限平均值的2x2矩阵
    return np.array([[avg_q1, avg_q2], [avg_q3, avg_q4]])


# 测试函数
matrix = np.array([[1, 2, 5, 7],
                   [4, 1, 8, 0],
                   [2, 0, 5, 1],
                   [0, 2, 1, 1]])

print(quadrant_averages(matrix))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1564915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多模态学习实战手册:读懂CompassRank榜单的评测指标!

1. 前言 榜单链接:CompassRank CompassRank 是一个中立且全面的性能榜单,作为大模型评测体系 OpenCompass2.0 中各类榜单的承载平台。它覆盖多领域、多任务下的模型性能,并定期更新,以提供动态的行业洞察。 CompassRank 保持中立性,不受任何商业利益干扰,并依托于 Com…

Springboot集成knife4j (swagger)

1、添加依赖 在pom.xml 文件中添加 knife4j-spring-boot-starter 的依赖 <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version> </depe…

D-迷恋网游(遇到过的题,做个笔记)

我的代码&#xff1a; #include <iostream> using namespace std; int main() {int a, b, c; //a表示内向&#xff0c;b表示外向&#xff0c;c表示无所谓cin >> a >> b >> c; //读入数 if (b % 3 0 || 3-b % 3 < c) //如果外向的人能够3人组成…

大数据学习第十二天(mysql不会的查询1)

1、数据 /*创建部门表*/ CREATE TABLE dept( deptno INT PRIMARY KEY, dname VARCHAR(50) comment 部门名称, loc VARCHAR(50) comment 工作地点 ); /*创建雇员表*/ CREATE TABLE emp( empno INT PRIMARY KEY, ena…

C++语言学习(三)——内联函数、auto、for循环、nullptr

1. 内联函数 &#xff08;1&#xff09;概念 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调 用建立栈帧的开销&#xff0c;内联函数提升程序运行的效率。 内联函数是一种编译器指令&#xff0c;用于告诉编译器…

操作系统—读者-写者问题及Peterson算法实现

文章目录 I.读者-写者问题1.读者-写者问题和分析2.读者—写者问题基本解法3.饥饿现象和解决方案总结 II.Peterson算法实现1.Peterson算法问题与分析(1).如何无锁访问临界区呢&#xff1f;(2).Peterson算法的基本逻辑(3).写对方/自己进程号的区别是&#xff1f; 2.只包含意向的解…

软考高级架构师:存储管理-磁盘管理概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

GD32F470_MPU-6050模块 三轴加速度 陀螺仪6DOF模块 有代码原理图 GY-521模块移植

2.13 MPU6050六轴传感器 MPU6050 是 InvenSense 公司推出的整合性 6 轴运动处理组件&#xff0c;其内部整合了 3 轴陀螺仪和 3 轴加速度传感器&#xff0c;并且含有一个IIC 接口&#xff0c; 可用于连接外部磁力传感器&#xff0c;并利用自带的数字运动处理器&#xff08;DMP: …

基于ssm的寝室管理系统(java项目+文档+源码)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的寝室管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 寝室管理系统设计的主要使用者分为…

参数传值机制

在 Java 中&#xff0c;方法的所有参数都是 “传值” 的 基本类型&#xff1a;数值的拷贝 引用类型&#xff1a;引用的拷贝 方法内部改变参数对象的状态&#xff08;修改某属性&#xff09;&#xff0c;改变将反映到原始对象上 因为方法内部和外部引用的是同一个对象 方法内部…

探索广告行业业务模型的创新与发展

标随着数字化时代的到来&#xff0c;广告行业正经历着前所未有的变革和发展。在这个充满挑战和机遇的时代&#xff0c;广告公司和从业者们正在探索各种创新的业务模型&#xff0c;以适应市场的变化并取得成功。本文将深入探讨广告行业的业务模型&#xff0c;探索创新与发展的路…

华为交换机配置指引(包含安全配置部分)以 S5735S-L48T4S-A1 配置为例

华为S5735S-L48T4S-A1 是一款千兆以太网交换机: 端口结构: 48个10/100/1000BASE-T以太网端口和4个千兆SFP光接口供电方式: 交流电源背板带宽: 432Gbps包转发率: 87/166Mpps机箱高度: 1U重量: 2.76kg(不含包材)功耗: 典型功耗为43.3W接口: 48个10/100/1000BASE-T以太网电接口…

Python-VBA编程500例-029(入门级)

连续字符段索引(Index of Consecutive Character Segments)在实际应用中具有多种场景。常见的应用场景有&#xff1a; 1、文本分析&#xff1a;在文本处理和分析中&#xff0c;连续字符段索引可以用于识别重复的字符序列或模式。这些模式可能对于理解文本的结构、风格或特定含…

详解人工智能(概念、发展、机遇与挑战)

前言 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是一门新兴的技术科学&#xff0c;是指通过模拟、延伸和扩展人类智能的理论、方法、技术和应用系统&#xff0c;以实现对人类认知、决策、规划、学习、交流、创造等智能行为的模拟、延伸和扩展…

Golang并发模型-Pipeline模型、Fan-in Fan-out模型

这段时间由于项目的需要&#xff0c;本人正在研究关于如何优雅的进行go的并发&#xff0c;以下是结合资料和视频的结果&#xff0c;文末会给出参考资料 Go语言的并发模型主要通过goroutine和channel实现&#xff0c;通过这个我们可以更有效地使用IO和CPU 这里我们围绕生成一个…

vtk实现多条曲线多条航迹轨迹用不同颜色区分不同曲线

vtk实现多条曲线多条航迹轨迹用不同颜色区分不同曲线 说明(废话)实现 说明(废话) 通过vtk9.2绘制多条三维曲线&#xff0c;让每条曲线不同颜色。 实现 以上只是测试效果 定义了一个Qvector m_colors&#xff0c;并在构造函数中赋值。 在箭头处调用&#xff0c;也就是上图最…

使用docker部署MongoDB数据库

最近由于工作需要搭建MongoDB数据库&#xff1a;将解析的车端采集的数据写入到数据库&#xff0c;由于MongoDB高可用、海量扩展、灵活数据的模型&#xff0c;因此选用MongoDB数据库&#xff1b;由于现公司只有服务器&#xff0c;因此考虑容器化部署MongoDB数据&#xff0c;特此…

clickhouse sql使用2

1、多条件选择 multiIf(cond_1, then_1, cond_2, then_2, …, else) select multiIf(true,0,1) 当第一条件不成立看第二条件判断 第一个参数条件参数&#xff0c;第二参数条件成立时走 2、clickhouse 在计算时候长出现NaN和Infinity异常处理 isNaN()和isInfinite()处理

数据结构栈和堆列

目录 栈&#xff1a; 栈的概念&#xff1a; 栈的实现&#xff1a; 栈接口的实现&#xff1a; 1.初始化栈&#xff1a; 2.入栈&#xff1a; 3.出栈&#xff1a; 4. 获取栈顶元素&#xff1a; 5.获取栈中有效数据的个数&#xff1a; 6.检测栈是否为空&#xff0c;如果为…

rocketmq管理工具rocketmq-console安装

rocketmq-console是一个图形化管理控制台&#xff0c;提供Broker集群状态查看&#xff0c;Topic管理&#xff0c;Producer、Consumer状态展示&#xff0c;消息查询等常用功能&#xff0c;这个功能在安装好RocketMQ后需要额外单独安装、运行。 中文文档地址&#xff1a;https:/…