机器学习初入门01-numpy的基础用法

一、numpy基础结构

1. numpy.genformtxt(‘路径名‘, delimiter = ‘分割符‘, dytype = 读取方式如str ):读取一个文件,返回一个numpy.ndarray结构的数据,这里给出了一个形式,更多参数信息参考help(numpy.genformtxt)

2. numpy.ndarray可看成是一个矩阵结构

3. numpy.array(list):把一个 list 转换成 ndarray 格式并返回,下面举两个例子

  vector = numpy.array([1, 2, 3, 4])  则vector表现为向量 [1 2 3 4]

  matrix = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])  则matrix表现为矩阵 :

4. vector.shape:给出vector向量的形状(4, )  matrix.shape:给出matrix矩阵的形状(4,4)  下文中向量形式的ndarray用vector表示,矩阵形式的ndarray用matrix表示

5. numpy.array中的内容需要是相同的类型的,这一点与 list 有很大的不同,否则ndarray的内容类型会发生强制转换,用 .dtype如vector.dtype查看数据的类型

6. ndarray结构的数据提取、切片方式与 list 结构一样。想取矩阵的某一列:matrix[:, 列数];想取矩阵的多个列:matrix[:, 对列切片];想取子矩阵即某些行某些列:matrix[对行切片, 对列切片]

7. 在numpy中,要判断一个矩阵或者向量中是否有一个值,不需要做循环,直接:vector/matrix == 想找的值。该式子会返回一个向量/矩阵(需要加括号,如v=(vector==1),可以把(vector==1)看成是一个条件,v=(vector==1)就是对该条件做判断,然后把判断的结果返回给v),内容类型是bool型,向量/矩阵中若有该值,对应的位置为True,否则是False。返回的向量也可以作为索引,如vector[v],返回1。

二、numpy的矩阵基础

8. vector/matrix.astype(类型0):把向量或矩阵中的内容转换成类型0

9. vector.min():取vector数据数据中的最小值。想了解ndarray更多的内置属性:print(help(numpy.array))

10. matrix.sum(axis=指定维度):axis=1表示每一行的所有元素相加,把每行的总值组成一个向量并返回;axis=0表示对列操作

三、numpy的常用函数

11.?np.arange(num):创建一个有num个数据的vector,数据从0顺序排到num-1。  np.arange(起始值,终止值,步长):数据从起始值开始,最后一个值要小于终止值,相邻值相差为步长,即数据范围为 [起始值,终止值)。如np,arange(10,30,10)生成[10,20]

12. ndarray.reshape(m,n):把ndarray变成一个m*n的matrix,m*n = ndarray中数据的个数。对于向量,可直接写为vector.shape(m,n)如np.arrange(8).reshape(4,2)生成矩阵 :

                                                                        

13. ndarray.size:给出ndarray的数据个数  ndarray.ndim::给出ndarray的维度

14. np.zeros/ones(结构,dtype=数据类型):初始化一个全0/全1的矩阵/向量;结构为数字,则初始化向量;结构为元组(m,n),则初始化m*n的矩阵;dtype缺省时,默认数据类型为float,其他数据类型有np.int、np.str等等。np.zeros(结构, dtype=np.str)生成的ndarray的数据为空字符串。若无特殊说明,下文中出现的结构均为数字或者元组。

15. np.random.random(结构0):进入numpy的random模块,然后调用random函数,生成一个结构为结构0,数据为随机数的ndarray,数据范围为[-1,1]。

16. np.linspace(起始值,终止值,数据个数):和np.arange类似,但数据可以取到终止值,及数据范围为 [起始值,终止值],数据内容是从起始值到终止值平均分布的数。类型缺省时为float

17. ndarray**num:ndarray的数据进行num次方运算

18. 设 a=ndarray1,b=ndarray2,a*b为对应位置相乘,a.dot(b)/np.dot(a,b)为ab的矩阵乘积,当然ab的结构要符合矩阵运算规则。

四、矩阵常用操作

?
?

19. np.exp(ndarray):对ndarray中的所有数据做exp运算  np.sqrt(ndarray):对ndarray中的所有数据进行开方操作。

20. np.floor(ndarray):取整操作对数据进行向下取整。

21. np.flatten(matrix): 对矩阵做扁平化处理,把矩阵拉扯为一个向量。

22. matrix.T:对矩阵转置。

23. np.hstack(a,b):横向拼接矩阵a和b,常用于拼接特征,即给原来的样本增加特征。  np.vstack(a,b):纵向拼接矩阵a和b,常用于拼接样本,即增加样本数量。

24. np.hsplit(a,num):横向切割矩阵a,平均切割为num份  np.vsplit(a,num):略。  num也可以是元组,是元组的话就是指定切割位置。

25. matrix.argmax(axis=指定维度):axis=0时返回每列最大值对应索引号;axis=1略。

26. np.tile(待扩展的ndarray, 扩展维度):扩展向量或矩阵的,直接上图


27. np.sort(ndarray,axis):对指定维度进行排序,直接上图

28. np.argsort(vector):把vector中的元素从小到大顺序提出索引号,直接上图

?

五、不同复制操作的对比

29.?=:python中变量可以认为是指针,也就是是说变量名指向的是内存中的一块存储空间,比如说a=5,b=a,那么a和b本身没有什么关系,只是某内存中存储的数据,但是a和b指向的是同一块内存区域,如果说我们改变b的值,那么只是改变了b所指向的内容,因为a和b指向同一内容,所以此时a所指向的内容也跟着变。表现出来就是b变a也变

30. view:若要实现浅赋值,可以使用view方法。c = a.view(),此时a和c指向的内存不同,假设a指向内存A,c指向内存C,若改变C的结构,比如把2*4矩阵改为4*2矩阵,这时A是不变的,但是如果改变C的数值,则A的数值会发生变化,因为内存A和C是共用一组数据的。表现出来就是c结构变,a不变;c数据变,a数据变

31. copy:若希望复制的时候指针指向不一样,数据也不一样,就用copy方法,copy实现的是深复制。 d = a.copy(),假设d指向内存D,D和A无关,D的内容也只是用A的内容做了初始化,此时无论如何改变D,A都不会发生任何变化。表现出来就是d变a不变

?

  
?

原文地址:https://www.cnblogs.com/gyhmolo/p/10452037.html

时间: 2024-10-28 19:09:05

机器学习初入门01-numpy的基础用法的相关文章

Python Numpy shape 基础用法(转自他人的博客,如涉及到侵权,请联系我)

Python Numpy shape 基础用法 shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度.它的输入参数可以使一个整数表示维度,也可以是一个矩阵.这么说你可能不太理解,我们还是用各种例子来说明他的用法: 一维矩阵[1]返回值为(1L,) 二维矩阵,返回两个值 一个单独的数字,返回值为空 我们还可以将shape作为矩阵的方法来调用,下面先创建了一个单位矩阵e 我们可以快速读取e的形状 假如我们只想读

机器学习初入门04 – Seaborn(持续更新)

Seaborn库可以说是在matplotlib库上的一个封装,它给我们提供了非常丰富的模板 一.整体布局风格设置 import seaborn as sns import numpy as np import matplotlib as mlt import matplotlib.pyplot as plt ? def sinplot(flip=1): #在0~14上找100个点 x = np.linspace(0, 14, 100) #画6条线 for i in range(1, 7): pl

【慕课网】php工程师学习计划之我的学习笔记——01 入门必学web基础 htmlcss基础课程 篇

为了进一步学习PHP,本周我选定了慕课网的PHP工程师学习计划, 从今天2015-07-06 10:24:47开始从头学习:计划本周尽快学习完成本课程,谨此作为笔记. 有个好的学习计划和思路非常非常重要,非常感谢慕课网提供本套学习计划,希望更多地学习平台能提供像这样全面一条龙学习思路清晰地教程. 计划图:链接 我的学习状况:2015-07-06 10:29:46 开始随记: php工程师学习计划笔记——01 入门必学web基础 htmlcss基础课程 篇 入门篇: text-align:cent

JavaScript基础入门 - 01

JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写JavaScript代码,说到这,我们首先要来说明一个需要新人们关注的点,因为我们的js是一门跨平台的语言,所以说,我们的代码可以运行在不同的平台之上.这也就导致了可能相同的代码放在不同的平台运行就会有所出入. 这里面说的平台其实被称之为宿主环境. 同时,代码在不同的平台上的运行方式也有所不同. 如果运行在服务端,那么更多的

pybrain初入门

标准的官方网址:http://pybrain.org/ 在python语言中自己实现神经网络的所有代码很复杂,但是有了pybrain就容易的多了,我们只需要专注于算法本身,而忽略算法的繁琐细节 pybrain的介绍 基本流程 1.构造神经网络 2.构造数据集 3.训练神经网络 4.结果可视化 5.验证与分析 pybrain使用入门 参考文献: 下面的基本用法将逐步的完善补充,主要还是根据自己的学习进度进行推进 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1

【转】机器学习最佳入门学习资料汇总

机器学习最佳入门学习资料汇总 专为机器学习初学者推荐的优质学习资源,帮助初学者快速入门. 这篇文章的确很难写,因为我希望它真正地对初学者有帮助.面前放着一张空白的纸,我坐下来问自己一个难题:面对一个对机器学习领域完全陌生的初学者,我该推荐哪些最适合的库,教程,论文及书籍帮助他们入门? 资源的取舍很让人纠结,我不得不努力从一个机器学习的程序员和初学者的角度去思考哪些资源才是最适合他们的. 我为每种类型的资源选出了其中最佳的学习资料.如果你是一个真正的初学者,并且有兴趣开始机器学习领域的学习,我希望

机器学习如何入门

作者:Leon链接:https://www.zhihu.com/question/20691338/answer/102249162来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 数 学 很多人翻看任何一本机器学习的书,看到一推的数学公式就开始打退堂鼓了.开始搜索,提问"机器学习需要哪些数学知识?"然后得到的结果可能会是"矩阵分析,概率论,优化设计--"而且还会有大量的人推荐一些例如"All of Statistics&qu

WCF入门教程:WCF基础知识问与答(转)

学习WCF已有近两年的时间,其间又翻译了Juval的大作<Programming WCF Services>,我仍然觉得WCF还有更多的内容值得探索与挖掘.学得越多,反而越发觉得自己所知太少,直到现在,我也认为自己不过是初窥WCF的门径而已. 学以致用”,如果仅仅是希望能够在项目中合理地应用WCF,那么对于程序员而言,可以有两种选择,一种是“知其然而不知其所以然”,只要掌握了WCF的基础知识,那么对于一般的应用就足够了.要做到这一点就很容易了,微软秉承了一贯的方式,将WCF这门技术优雅地呈现给

【机器学习快速入门】简单自学机器学习理论

[机器学习快速入门]简单自学机器学习理论 机器学习理论--part I 前言 (第II部分内容点此:第III部分内容点此) 动机 大多数人在小的时候被魔术师以及魔术技巧所迷住,并想弄明白其中的奥秘.有些人会带着这份迷恋研究到更深处并学习魔术技巧,有些人会接受专业的训练,而其他人会继续平庸下去.我在年幼时也尝试过魔术技巧并沉迷于其中,然而后来学习的是另外一种魔术,称作计算机编程. 编程确实酷似魔法, 和魔术一样,自学的现象在计算机编程世界占了上风.在过去的两年计算机开发者调查显示,超过一半的开发者