机器学习初入门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不变
机器学习初入门01-numpy的基础用法的更多相关文章
- Python Numpy shape 基础用法(转自他人的博客,如涉及到侵权,请联系我)
Python Numpy shape 基础用法 shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度.它的输入 ...
- Numpy的基础用法
1.用Numpy创建数组 numpy.array(object):创建数组,与array.array(typecode[, initializer])不同,array.array()只能创建一维数组 ...
- 机器学习初入门04 – Seaborn(持续更新)
Seaborn库可以说是在matplotlib库上的一个封装,它给我们提供了非常丰富的模板 一.整体布局风格设置 import seaborn as sns import numpy as np im ...
- 机器学习初入门03 - Matplotlib
这一部分很简单,所以以代码的形式给出,在实际学习开发中,Matplotlib最好只把它当成一个画图的工具来用,没有必要深究其实现原理是什么. 一.折线图的绘制 import pandas as pd ...
- 机器学习初入门02 - Pandas的基本操作
之前的numpy可以说是一个针对矩阵运算的库,这个Pandas可以说是一个实现数据处理的库,Pandas底层的许多函数正是基于numpy实现的 一.Pandas数据读取 1.pandas.read_c ...
- JavaScript基础入门 - 01
JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写JavaScript代码, ...
- CSS3基础入门01
CSS3 基础入门 01 前言 相对于css2来说,css3更新了很多的内容,其中包括选择器.颜色.阴影.背景.文本.边框.新的布局方案.2d.3d.动画等等. 而如果想要学习css3的诸多部分,不妨 ...
- Java基础语法入门01
Java基础语法入门01 学习java你要先进行去了解JDK,JRE,JVM JDK Java开发工具包 JRE Java语言开发的运行环境 JVM Java虚拟机,用于Java语言的跨平台所用. 当 ...
- # 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封装 ...
随机推荐
- PHP支付宝支付开发流程
支付宝开发流程 1.首先我们先谈谈第三方支付 所谓第三方支付就是和一些各大银行签约,并具备一定实力和信誉保障的第三方独立机构提供的交易平台 目前市面上常见的有支付宝,财付通,网银,易宝支付等,网站 ...
- django版本切换以及更改url(pycharm)
Django版本切换:https://blog.csdn.net/weixin_42305814/article/details/80742090 因为是从2版本更改到1版本,所以里面一些东西需要变动 ...
- Angular开发环境搭建和项目创建以及启动
工具的安装 首先需要安装node,直接在官网下载node,然后一直下一步安装完即可,在安装node的时候自带了npm包管理工具 然后安装Angular CLI,使用npm命令安装输入以下命令 npm ...
- POJ2104 K-th Number(整体二分)
嘟嘟嘟 整体二分是一个好东西. 理解起来还行. 首先,需要牢记的是,我们二分的是答案,也就是在值域上二分,同时把操作分到左右区间中(所以操作不是均分的). 然后我就懒得讲了-- 李煜东的<算法竞 ...
- android 解决小米手机上选择照片路径为null情况
昨天测试帅哥说他手机选择图库崩溃了,这是一个上传头像的功能,相信很多应用都有这个功能,于是我就把手机拿过来打log看了下返回的路径 为null,在网上搜索了下解决方案,现在把解决方案记录下: 这是在o ...
- apache,R,P,url重写,伪静态,反向代理
需求: 1,浏览器地址栏中URL不变 2,伪静态重写生效 ===================== <VirtualHost *> ServerName xinwen.888.com.c ...
- Ubuntu安装 Alisql编译安装步骤:
github地址: https://github.com/alibaba/AliSQL 一.直接git下载保存到本地: git clone https://github.com/alibaba/Ali ...
- vector使用小结
1.创建vector容器: std::vector<int> data; std::vector<int> data(20);大小20,自动赋值为0 std::vector&l ...
- PAT B1008 数组元素循环右移问题 (20 分)
一个数组A中存有N(>)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A ...
- Centos6.4安装配置sendmail
一.安装sendmail yum install -y sendmail yum install -y sendmail-cf 二. 安装salauthd //使用SMTP认证,需要安装saslaut ...