《Python机器学习》安装anaconda + numpy使用示例

news2024/12/25 10:03:55

👂 小宇(治愈版) - 刘大拿 - 单曲 - 网易云音乐 

目录

一,安装

二,Numpy使用示例

(一)Numpy数组的创建和访问

1,创建和访问Numpy的一维数组和二维数组 

2,Numpy数组的数据来源:Python列表

(二)Numpy的计算功能

1,Numpy数组的计算

2,创建矩阵和矩阵乘法

3,矩阵运算初步


全书400页,理论,代码各占一半,可以说,理论就是服务于代码的,实操性极强

当然,都是基础的代码,不过有一定难度,毕竟很厚,而一学期只有17周,每周4节课

如果想学有所成,单靠上课肯定不够的

老师说的是,平时作业必须有效果实现

大作业必须有较复杂的实现,可以通过准备人工智能比赛,作为大作业提交内容

边学边敲边参加比赛才是这门课的特色

一,安装

首先百度搜索anaconda清华镜像,第一个点进去,有个什么安装包,就是点第一个链接

然后下载anaconda,注意是Anaconda3-2019.10-Windows-x86_64.exe这个版本,也就是书里代码的版本

不要下最新的

下完后,点击“开始”,点击Anaconda Navigater,再点Jupyter Notebook,就开始在弹出来的浏览器敲代码了

当然,我一开始谈出的是HTML的visual studio,把里面url的网址粘贴复制到自己浏览器就好

二,Numpy使用示例

(一)Numpy数组的创建和访问

就是个简单的记录,一开始的内容非常简单,无非是python基础+import各种库

1,创建和访问Numpy的一维数组和二维数组 

import numpy as np #导入numpy模块,指定别名为np
data = np.array([1,2,3,4,5,6,7,8,9]) #创建一个numpy一维数组
print('Numpy的一维数组:\n{0}'.format(data)) #数组内容
print('数据类型:%s'%data.dtype) #数组元素的数据类型
print('1维数组中各元素扩大10倍:\n{0}'.format(data*10))
print('访问第2个元素:{0}'.format(data[1])) #索引从0开始
data = np.array([[1,3,5,7,9],[2,4,6,8,10]]) #创建一个2行5列的numpy二维数组
print('Numpy的2维数组:\n{0}'.format(data))
print('访问二维数组中第1行第2列元素:\n{0}'.format(data[0,1])) #二维数组需要两个索引,逗号分隔
print('访问二维数组中第1行第2至第4列元素:\n{0}'.format(data[0,1:4])) #代表行和列
print('访问二维数组中第1行上的所有元素:\n'.format(data[0,:]))
Numpy的一维数组:
[1 2 3 4 5 6 7 8 9]
数据类型:int32
1维数组中各元素扩大10倍:
[10 20 30 40 50 60 70 80 90]
访问第2个元素:2
Numpy的2维数组:
[[ 1  3  5  7  9]
 [ 2  4  6  8 10]]
访问二维数组中第1行第2列元素:
3
访问二维数组中第1行第2至第4列元素:
[3 5 7]
访问二维数组中第1行上的所有元素:

.dtype是Numpy数组的属性之一,用于存储数组元素的数据类型

2,Numpy数组的数据来源:Python列表

列表中元素数据类型可以不同,但Numpy数组的元素数据类型必须相同 

以下代码创建列表,并将列表转化为Numpy数组

data = [[1,2,3,4,5,6,7,8,9],['A','B','C','D','E','F','G','H','I']] #创建Python二维列表
print('data是Python的列表(list):\n{0}'.format(data))
MyArray1 = np.array(data) #列表转化为Numpy数组
print('MyArray1是Numpy的N维数组:\n%s\nMyArray1的形状:%s'%(MyArray1, MyArray1.shape)) #数组内容和形状
data是Python的列表(list):
[[1, 2, 3, 4, 5, 6, 7, 8, 9], ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']]
MyArray1是Numpy的N维数组:
[['1' '2' '3' '4' '5' '6' '7' '8' '9']
 ['A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I']]
MyArray1的形状:(2, 9)

1,(2, 9)表示2行9列

2,第3行列表转数组时,由于数组要求数据类型一致,自动将数值型 --> 字符型

3,.shape是Numpy数组对象的属性之一,用于存储数组的行数和列数

(二)Numpy的计算功能

1,统计量   2,新变量   3,矩阵计算

1,Numpy数组的计算

MyArray2 = np.arange(10) #生成0至9的一维数组
print('MyArray2:\n{0}'.format(MyArray2))
print('MyArray2的基本描述统计量:\n均值:%f,标准差%f,总和:%f,最大值:%f'%(MyArray2.mean(),MyArray2.std(),MyArray2.sum(),MyArray2.max()))
print('MyArray2的累计和:{0}'.format(MyArray2.cumsum())) #累计和
print('MyArray2开平方:{0}'.format(np.sqrt(MyArray2))) #开平方
np.random.seed(123) #指定随机数种子
MyArray3 = np.random.randn(10) #符合正态分布
print('MyArray3:\n{0}'.format(MyArray3)) 
print('MyArray3排序结果:\n{0}'.format(np.sort(MyArray3))) #排序
print('四舍五入到最近整数:\n{0}'.format(np.rint(MyArray3))) #四舍五入
print('各元素的正负号:\n{0}'.format(np.sign(MyArray3))) #判断正负符号
print('各元素非负显示"正",负数显示"负":\n{0}'.format(np.where(MyArray3>0,'正','负')))
print('MyArray2+MyArray3的结果:\n{0}'.format(MyArray2+MyArray3)) #相加
MyArray2:
[0 1 2 3 4 5 6 7 8 9]
MyArray2的基本描述统计量:
均值:4.500000,标准差2.872281,总和:45.000000,最大值:9.000000
MyArray2的累计和:[ 0  1  3  6 10 15 21 28 36 45]
MyArray2开平方:[0.         1.         1.41421356 1.73205081 2.         2.23606798
 2.44948974 2.64575131 2.82842712 3.        ]
MyArray3:
[-1.0856306   0.99734545  0.2829785  -1.50629471 -0.57860025  1.65143654
 -2.42667924 -0.42891263  1.26593626 -0.8667404 ]
MyArray3排序结果:
[-2.42667924 -1.50629471 -1.0856306  -0.8667404  -0.57860025 -0.42891263
  0.2829785   0.99734545  1.26593626  1.65143654]
四舍五入到最近整数:
[-1.  1.  0. -2. -1.  2. -2. -0.  1. -1.]
各元素的正负号:
[-1.  1.  1. -1. -1.  1. -1. -1.  1. -1.]
各元素非负显示"正",负数显示"负":
['负' '正' '正' '负' '负' '正' '负' '负' '正' '负']
MyArray2+MyArray3的结果:
[-1.0856306   1.99734545  2.2829785   1.49370529  3.42139975  6.65143654
  3.57332076  6.57108737  9.26593626  8.1332596 ]

1,np.range()生成指定范围取值的一维数组

2,.mean()计算数组元素的均值

.std()标准差,.sum()总和,.max()最大值

3,数组方法.cumsum()累加和

4,Numpy函数sqrt()开平方

5,Numpy函数seed()指定随机数种子(保证随机数不同)

6,Numpy函数random.randn()生成包含n个符合正态分布元素的一维数组

7,numpy.sort()排序,numpy.rint()四舍五入,numpy.where()依次对数组元素逻辑判断

2,创建矩阵和矩阵乘法

机器学习数据建模过程中,常见的运算

np.random.seed(123)
X = np.floor(np.random.normal(5, 1, (2, 5))) #得到2行5列二维数组X(矩阵)
Y = np.eye(5) #5行5列单位矩阵Y
print('X:\n{0}'.format(X))
print('Y:\n{0}'.format(Y))
print('X和Y的点积:\n{0}'.format(np.dot(X, Y))) #矩阵乘积
X:
[[3. 5. 5. 3. 4.]
 [6. 2. 4. 6. 4.]]
Y:
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]
X和Y的点积:
[[3. 5. 5. 3. 4.]
 [6. 2. 4. 6. 4.]]

1,numpy.random.normal(5, 1, (2, 5))生成2行5列,均值5,标准差1的服从正态分布的数组元素

2,numpy.floor()得到距各元素最近的最大整数

3,numpy.eye(n)生成n行n列单位矩阵

4,numpy.dot(X, Y)计算矩阵X和Y的矩阵乘积

3,矩阵运算初步

只能说跟着敲完一遍,让自己写还是写不出来,还得背 

除了矩阵的乘法,矩阵中还有其他重要的矩阵运算,

比如矩阵的逆,特征值,特征向量,奇异值分解... 

from numpy.linalg import inv,svd,eig,det #导入numpy的linalg模块的函数
X = np.random.randn(5,5) #生成5行5列符合正态分布的矩阵
print(X) 
mat = X.T.dot(X) #X.T是X的转置, .dot(X)转置后结果与X相乘
print(mat)
print('矩阵mat的逆:\n{0}'.format(inv(mat))) #inv矩阵的逆
print('矩阵mat的行列式值:\n{0}'.format(det(mat))) #det行列式值
print('矩阵mat的特征值和特征向量:\n{0}'.format(eig(mat))) #eig特征值和对应的特征向量
print('对矩阵mat作奇异值分解:\n{0}'.format(svd(mat))) #svd对矩阵进行奇异值分解

知识点在注释里

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

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

相关文章

5.1 线程

文章目录1.概述2.多线程的特性2.1 随机性2.2 CPU分时调度2.3 线程的状态2.4 线程状态与代码对照3.多线程代码实现方式1:继承Thread3.1 概述3.2 常用方法3.3 测试多线程的创建方式14.多线程代码实现方式2:实现Runnable接口4.1 概述4.2 常用方法4.3 练习2:测试多线程的…

基于RK3399+5G的医用视频终端设计

当前在各种先进的信息通信技术的驱动下,医疗行业已呈现出信息化、移动化、智能化的发展趋势。特别是 5G 通信技术的落地应用推动了智慧医疗行业的 蓬勃发展,涌现出大量基于 5G 技术的医疗健康应用与服务,进一步融合了 5G、 物联网与大数据等先…

【机器学习】XGBoost

1.什么是XGBoost XGBoost(eXtreme Gradient Boosting)极度梯度提升树,属于集成学习中的boosting框架算法。对于提升树,简单说就是一个模型表现不好,继续按照原来模型表现不好的那部分训练第二个模型,依次类推。本质思想与GBDT一致…

Docker----------day3(tomcat、mysql8、redis6.2.6常用软件安装)

常规安装大体步骤 1.安装tomcat 1.查找tomcat docker search tomcat2.拉取tomcat docker pull tomcat3.docker images查看是否有拉取到的tomcat 4.使用tomcat镜像创建容器实例(也叫运行镜像) docker run -it -p 8080:8080 tomcat5.新版tomcat把webapps.dist目录换成webapp…

【STM32笔记】__WFI();进入不了休眠的可能原因(系统定时器SysTick一直产生中断)

【STM32笔记】__WFI();进入不了休眠的可能原因(系统定时器SysTick一直产生中断) 【STM32笔记】低功耗模式配置及避坑汇总 前文: blog.csdn.net/weixin_53403301/article/details/128216064 【STM32笔记】HAL库低功耗模式配置&am…

UVa 690 Pipeline Scheduling 流水线调度 二进制表示状态 DFS 剪枝

题目链接:Pipeline Scheduling 题目描述: 给定一张5n(1≤n≤20)5\times n(1\le n\le20)5n(1≤n≤20)的资源需求表,第iii行第jjj列的值为’X’表示进程在jjj时刻需要使用使用资源iii,如果为’.则表示不需要使用。你的任务是安排十个…

多元化增长引擎业务占比超四成,联想开启混动模式?

一句话概括联想集团的业绩:预料之内的整体下滑,超出预期的第二曲线。 上周五(2月17日),联想集团发布了2022到2023财年第三季度业绩。根据财报,联想集团实现营收152.67亿美元,同比下降24%&#…

你评论,我赠书~【哈士奇赠书 - 14期】-〖人人都离不开的算法-图解算法应用〗参与评论,即可有机获得

大家好,我是 哈士奇 ,一位工作了十年的"技术混子", 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 &#x1f4e…

html常用font-family设置字体样式

<table border"1" cellpadding"0" cellspacing"0" ><tr><td><h3 style"font-family: 黑体;">黑体&#xff1a;SimHei</h3></td><td><h3 style"font-family: 华文黑体;">华…

优思学院:六西格玛中的水平对比方法是什么?

水平对比&#xff0c;就是比较不同事物之间的差异。 这个概念在六西格玛管理中也很重要&#xff0c;也就是我们经常说的标杆管理&#xff0c;经常被用来寻找行业中最好的做法&#xff0c;以帮助组织改进自身的绩效。 在六西格玛管理中&#xff0c;水平对比有三种常见的应用方式…

java面试题-JUC基础类介绍

1.JUC框架包含几个部分?五个部分&#xff1a;Lock框架和Tools类(把图中这两个放到一起理解)Collections: 并发集合Atomic: 原子类Executors: 线程池2.Lock框架和Tools哪些核心的类?Lock接口&#xff1a;用于提供比synchronized更加灵活和高级的线程同步控制&#xff0c;支持公…

<Linux>vscode搭建Linux远程开发工具

一、下载vscode&#x1f603;可以去vscode的官网下载&#xff0c;不过是外网下载速度较慢提速可以参考&#xff1a;(81条消息) 解决VsCode下载慢问题_vscode下载太慢_wang13679201813的博客-CSDN博客官网&#xff1a;Visual Studio Code - Code Editing. Redefined这里推荐的是…

【自然语言处理】【大模型】GLM-130B:一个开源双语预训练语言模型

GLM-130B&#xff1a;一个开源双语预训练语言模型《GLM-130B: An open bilingual pre-trained model》论文&#xff1a;https://arxiv.org/pdf/2210.02414.pdf 相关博客 【自然语言处理】【大模型】GLM-130B&#xff1a;一个开源双语预训练语言模型 【自然语言处理】【大模型】…

拼多多出评软件工具榜单助手使用教程

软件使用教程下载软件前&#xff0c;关闭电脑的防火墙&#xff0c;退出所有杀毒软件&#xff0c;防止刷单软件被误删桌面建立一个文件夹&#xff0c;下载下来的安装包放进去&#xff0c;解压到当前文件夹&#xff0c;使用过程中别打开防火墙、杀毒软件。打开软件后&#xff0c;…

移动WEB开发五、响应式布局

零、文章目录 文章地址 个人博客-CSDN地址&#xff1a;https://blog.csdn.net/liyou123456789个人博客-GiteePages&#xff1a;https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee&#xff1a;https://gitee.com/bluecusliyou/TechLearnGithub&#xff1a;https:…

SAP FICO 理解业务范围的概念

业务范围 以前转载过几篇关于业务范围的文章&#xff1a; SAP Business Area 业务范围_SAP剑客的博客-CSDN博客_sap 业务范围 SAP FI 系列 002&#xff1a;业务范围派生_stone0823的博客-CSDN博客_sap 业务范围 http://blog.sina.com.cn/s/blog_3f2c03e30102w9yz.html 仍是…

虹科新品 | 最高80W!用于大基板紫外曝光系统的高功率UVLED光源

光刻曝光是指利用紫外光源将胶片或其他透明物体上的图像信息转移到涂有光敏材料&#xff08;光刻胶&#xff09;表面以得到高精度和极细微图案的一种制作工艺&#xff0c;主要用于半导体生产、高精密集成电路、PCB板制造、MEMS等行业。光刻技术是半导体工业和集成电路是最为核心…

十一、项目实战一

项目实战一 需求 以 前后端不分离的方式实现学生的增删改查操作 学生列表功能 接口设计 url:/students/ 请求方法&#xff1a;get 参数&#xff1a; 格式&#xff1a;查询参数 参数名类型是否必传说明pageint否页码&#xff0c;默认为1sizeinit否每页数据条数默认为10n…

浅谈安科瑞电力智能运维在高速铁路电力系统的应用分析

摘 要&#xff1a;高速铁路电力智能运维管理系统采用终端感知层、系统网络层、系统平台层的三层网络架构模式&#xff0c;通过集成网关&#xff0c;共享通信传输设备&#xff0c;利用铁路专用运维传输网络通道将各类监测数据上传至运维管理平台数据进行实时分析&#xff0c;建…

k8s二进制部署

目录 一、K8S常见的部署方式 1.1 K8S常见的部署方式 1.2 k8s部署 二进制与高可用的区别 二、Kubernetes二进制部署 2.1 Kubernetes二进制部署准备 ① 服务器准备 ② 签发证书环境准备 2.2 操作系统初始化配置 2.3 部署 etcd 集群 ① 在 master01 节点上操作 ② work…