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

news/2024/4/24 11:07:34/文章来源:https://blog.csdn.net/csdner250/article/details/129130664

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

目录

一,安装

二,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.236067982.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.428912630.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.651436543.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.luyixian.cn/news_show_71829.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可调恒流驱动LED电路分析

https://www.icxbk.com/article/detail?aid884 常规使用的pwm调亮度不仅会导致频闪,而且在长时间使用的时候,有损坏led的风险,所以这次设计了一个恒流调亮度电路,其电路图如下所示 电路原理的解读: 左侧的电位计起着…

Eclipse各版本安装Tomcat插件全攻略

Eclipse Tomcat 插件的作用 Eclipse Tomcat 插件可以将Tomcat 集成到Eclipse中,插件安装之后在Eclipse中可以看到类似下面的几个图标: Eclipse Tomcat 插件的主要作用有: 在Eclipse 中可以直接启动,关闭和重启本机的Tomcat可以…

电容的参数-详细描述

贴片电容 如同如所示,MLCC(Multi-layer Ceramic Capacitors),外形很好区分。 实际内部结构 使用的还是平行板电容器原理,只是这个是叠层结构;电解电容是卷起来的圆柱状; 容值: …

Ubuntu22.04设置独显用于深度学习运算,核显用于屏幕显示

目录摘要主板bios设置第一步:切换prime-select第二步:关机重启,并将显示器接口插到主板上第三步:设置PRIME Profiles为NVIDIA On-Demand模式注意事项参考文献摘要 目前有需求配置台式机win11Ubuntu的双系统,安装双系统…

linux线程的基本知识

这里用的是Linux的pthread线程库,需要加pthread线程库。 线程的创建 第一个参数是线程id的地址。第二个参数是线程属性,一般为NULL。第三个是要执行的函数。第四个是函数的参数,一般也为NULL 线程的等待,第一个参数是线程的id,第…

SpringBoot之DEBUG远程调试黑科技?

所谓的远程调试就是服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地 的代码必须和远程服务器运行的代码一致)中设置断点,每当有请求到远程服务器时时能够在本地知道 远程服务端的此时的内部状态。 简单的…

10.现代循环神经网络

10.现代循环神经网络 目录 门控循环单元(GRU)门控隐状态 重置门和更新门候选隐状态 隐状态从零开始实现 初始化模型参数定义模型训练与预测 简洁实现总结 长短期记忆网络(LSTM) 门控记忆元 输入门、忘记门和输出门候选记忆元记忆…

论文复现:模拟风电不确定性——拉丁超立方抽样生成及缩减场景(Matlab)

风电出力的不确定性主要源于预测误差,而研究表明预测误差(e)服从正态分布且大概为预测出力的10%。本代码采用拉丁超立方抽样实现场景生成[1,2]、基于概率距离的快速前代消除法实现场景缩减[3],以此模拟了风电出力的不确定性。 1 …

蓝桥杯刷题025——推导部分和(加权并查集)

2022省赛 问题描述 对于一个长度为 N 的整数数列 ​, 小蓝想知道下标 l 到 r 的部 分和是多少? 然而, 小蓝并不知道数列中每个数的值是多少, 他只知道它的 M 个部分和 的值。其中第 i 个部分和是下标 ​ 到 的部分和 , 值是 。 输入格式 第一行包含 3 个整数 N、M 和 Q 。分…

基于DSP+FPGA的机载雷达伺服控制系统的硬件设计与开发

机载雷达是以飞机为载体的各种雷达天线的总称,主要用于空中侦察、警戒、保 证航行准确与安全[1]。随着航空航天技术的飞速发展,以及微电子、计算机和高速集 成电路等新型技术在军事领域的广泛应用[2],各国都研制出了许多新型战机和导弹,机 载…

企业微信的聊天机器人来了,免费下载(Python版)

大家好,这里是程序员晚枫,个人网址:python-office.com 上次分享了微信机器人的视频以后,视频下面有一个热门评论: 什么时候开发企业版微信机器人?自动回复、自动群发等等~ 在经历了一段时间的查找和开发以…

【基础算法】之 冒泡排序优化

冒泡排序思想基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来(假设从小到大),即为较大的数慢慢往后排,较小的数慢慢往前排。直观表达,每一趟遍历,…

Docker----------day3

常规安装大体步骤 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…

【大数据离线开发】7.4 HBase数据保存和过滤器

7.4 数据保存的过程 注意:数据的存储,都需要注意Region的分裂 HDFS:数据的平衡 ——> 数据的移动(拷贝)HBase:数据越来越多 ——> Region的分裂 ——> 数据的移动(拷贝) …

清理bib文件(删除重复项,仅保留tex中引用的条目)

在写latex文件的过程中,经常会遇到添加了一堆文献的bibtex到bib文件中,有时候文章一长同一篇文献用不同的cite-key引用了多次,同时也会有一些文献最后并没被正文引用,这就需要对bib文件进行清理。 删除重复项 可以用JabRef 在J…

经理与员工工资关系-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)

【案例4-6】经理与员工工资案例(利用多态实现) 欢迎点赞关注收藏 【案例介绍】 案例描述 某公司的人员分为员工和经理两种,但经理也属于员工中的一种,公司的人员都有自己的姓名和地址,员工和经理都有自己的工号、工…

不同投票需要的不同上传方式outlook 投票功能怎么设置投票 html5

“艺空间手造坊”网络评选投_投票方式的选择_免费图文教学投票教学关于微信投票,我们现在用的最多的就是小程序投票,今天的网络投票,在这里会教大家如何用“活动星投票”小程序来进行投票。我们现在要以“艺空间手造坊”为主题进行一次投票活…

AcWing1015.摘花生

AcWing 1015. 摘花生Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它…

Java并发知识点

文章目录1. start()和run()方法的区别?2. volatile关键字的作用?使用volatile能够保证:防止指令重排3. sleep方法和wait方法有什么区别?sleep()方法4. 如何停止一个正在运行的线程?方法一:方法二&#xff1…

多重继承的虚函数表

同一个类,不同对象使用同一张虚函数表 不同类使用不同的虚函数表 子类自己添加的虚函数(非重写),在VS中是将此放在第一个继承类的虚函数表里. #include <iostream> using namespace std;class Father { public:virtual void func1() { cout << "Father::f…