一、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不变

  

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

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

    Python Numpy shape 基础用法 shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度.它的输入 ...

  2. Numpy的基础用法

    1.用Numpy创建数组 numpy.array(object):创建数组,与array.array(typecode[, initializer])不同,array.array()只能创建一维数组 ...

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

    Seaborn库可以说是在matplotlib库上的一个封装,它给我们提供了非常丰富的模板 一.整体布局风格设置 import seaborn as sns import numpy as np im ...

  4. 机器学习初入门03 - Matplotlib

    这一部分很简单,所以以代码的形式给出,在实际学习开发中,Matplotlib最好只把它当成一个画图的工具来用,没有必要深究其实现原理是什么. 一.折线图的绘制 import pandas as pd ...

  5. 机器学习初入门02 - Pandas的基本操作

    之前的numpy可以说是一个针对矩阵运算的库,这个Pandas可以说是一个实现数据处理的库,Pandas底层的许多函数正是基于numpy实现的 一.Pandas数据读取 1.pandas.read_c ...

  6. JavaScript基础入门 - 01

    JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写JavaScript代码, ...

  7. CSS3基础入门01

    CSS3 基础入门 01 前言 相对于css2来说,css3更新了很多的内容,其中包括选择器.颜色.阴影.背景.文本.边框.新的布局方案.2d.3d.动画等等. 而如果想要学习css3的诸多部分,不妨 ...

  8. Java基础语法入门01

    Java基础语法入门01 学习java你要先进行去了解JDK,JRE,JVM JDK Java开发工具包 JRE Java语言开发的运行环境 JVM Java虚拟机,用于Java语言的跨平台所用. 当 ...

  9. # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结

    095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

随机推荐

  1. 设置联想键盘恢复F1~F12默认按键的操作办法

    背景 默认都是笔记本键盘才有Fn组合功能键,台式机很少有.今天领到的是联想键盘,给我的台式机使用后F12很麻烦,必须Fn+F12才可以. 需求 恢复默认的F1~F12功能 方案 只需要下载驱动安装: ...

  2. 后台线程下的WinFrom窗体控件操作 Invoke

    Invoke(new MethodInvoker(delegate { ControllerLogout(controller_id, is_successful, description, cont ...

  3. 等我干IT发财了,就和你离婚。。。。。

    01 “等我干IT发财了,就和你离婚” 他淡淡地说 听完后,她心里暖暖的, 她想,没有比这更天长地久. 海枯石烂的承诺了. ——2018年度最佳微小说奖 02 “等我干IT发财了,我就买房和你结婚.” ...

  4. .后面是方法不加引号 ,后面是"名"要加引号

    .后面是方法不加引号 ,后面是"名"要加引号  

  5. python爬虫(二)

    python爬虫之urllib 在python2和python3中的差异 在python2中,urllib和urllib2各有各个的功能,虽然urllib2是urllib的升级版,但是urllib2还 ...

  6. 为什么说swift是面向协议编程--草稿

    为什么说swift是面向协议编程 public protocol ReactiveCompatible { /// Extended type associatedtype CompatibleTyp ...

  7. mpvue使用vant Weapp运行npm run build命令打包后失效

    最近在使用mpvue开发微信小程序,在开发过程中使用有赞的小程序ui框架—— vant Weapp ,至于如何使用在我个人博客中有一篇关于如何使用vant Weapp ,需要的同学请点进这里自行查看. ...

  8. HTTP 请求头中的 X-Forwarded-For,X-Real-IP

     X-Forwarded-For 在使用nginx做反向代理时,我们为了记录整个的代理过程,我们往往会在配置文件中做如下配置: location / { 省略... proxy_set_header ...

  9. 【转】 python中 * 的用法

    转自:https://www.cnblogs.com/jony7/p/8035376.html 1.表示乘号 2.表示倍数,例如: def T(msg,time=1):    print((msg+' ...

  10. 企业案例--生产环节更改mysql字符集

    查看数据库字符集: show database create dbname \G; 查看数据库表字符集: show table create tbname \G; 查看现有数据库字符集设置: show ...