机器学习_第一节_numpy

今天学了机器学习第一节, 希望能够坚持下去,其实不在乎课程是什么?关键要坚持下去

今天主要学了对矩阵的一些操作, 用的库是numpy

开始从头到尾捋一遍, 作者说的很有道理,学计算机,动手能力要强,所以以后尽量不要用pycharm,养成了不好的习惯

1.首先,第一个是导入库 import numpy

然后接下来我们创建一个矩阵: 用array方法

import numpy
vector = numpy.array([5, 10, 15, 20])  #一维矩阵

matrix = numpy.array([[5, 10, 15], [25, 30, 35], [40, 45, 50]])  #多维矩阵 注意中间的[]
print (matrix)

2.判断矩阵的类型 这里用的是shape方法

print(vector)

print(matrix.shape)

3.判断矩阵的类型 , 这里用的是dtype方法

vector.dtype

4.取值 这个是矩阵操作中比较重要的方法 有切片操作

  4.1 取单一元素

matrix = numpy.array([[5, 10, 15], [25, 30, 35], [40, 45, 50]])    
number = matrix[1,2]    #打印结果是35 [ , ] 与C语言一样, 默认取值从0开始 , 所以取得是第1行第二列的元素
print(number)

  4.2 去切片元素

vector = numpy.array([5, 10, 15, 20.0])
print(vector[0:3])      #这个与python一致, [ : ] 默认取得是一行的元素,所以结果是5 10 15

  4.3 按列取值

matrix = numpy.array([
[5, 10, 15],
[25, 30, 35],
[40, 45, 50]])
print(matrix[:,1])          #这个是[ : , : ] 前面代表的是行, 后面代表的是列 所以这个取得是全部第二列的元素 ,结果是10 30 45

  4.4

matrix = numpy.array([
[5, 10, 15],
[25, 30, 35],
[40, 45, 50]])
print(matrix[:,0:2])   #跟上面一致, 这个取得是 0, 1列的元素

  4.5

matrix = numpy.array([
[5, 10, 15],
[25, 30, 35],
[40, 45, 50]])
print(matrix[1:3,0:2])  #这个就是取1,2行 0, 1列的元素, 结果是[25 30] [40 45]

5.判断一个矩阵是否有需要的值,返回还是一个矩阵,只是里面的值是bool类型

vector = numpy.array([5, 10, 15, 20.0])
vector == 10  #返回结果  array([False, True, False, False])

  5.1通过返回的值, 可以找到元素的值 这个意义不大

vector = numpy.array([5, 10, 15, 20])

  5.2 通过返回的值, 可以找到所在元素的列和行 这个很有意义

matrix = numpy.array([
[5, 10, 15],
[25, 30, 35],
[40, 45, 50]])

second_column_25 = (matrix[ : ,1] ==30)
print(second_column_25)
print(matrix[second_column_25, :])

6 and 和 or 操作

vector = numpy.array([5, 10, 15, 20])
equal_ten_five = (vector == 5) & (vector == 10)
print(equal_ten_five)

vector = numpy.array([5, 10, 15, 20])
equal_ten_five = (vector == 5) | (vector == 10)
print(equal_ten_five)

7 astype 转换方法 比如 将str类型 转换为 float类型 比较重要

vector = numpy.array(["1", "2", "3"])
print(vector.dtype)
print(vector)
vector = vector.astype(float)
print(vector.dtype)
print(vector)

8. sum方法 这个可以指定行和列相加得到新的矩阵

matrix = numpy.array([
[5, 10, 15],
[25, 30, 35],
[40, 45, 50]])
matrix.sum(axis = 1)  #将列表的axis = 1 表示行相加,  axis = 0表示列相加array([ 30, 90, 135])

9.这条包含的信息量比较大, 一是我们可以简写:numpy as np ,2. 可以创建一个列表arange ( )  3.将列表转换成我们需要的行和列, 用reshape( , )方法

import numpy as np
print(np.arange(15))
a = np.arange(15).reshape(3,5)
10 看矩阵的维度, 实际应该+1  用 a.ndim

11看矩阵的元素的个数 a.size

12 创建一个全是0的矩阵 用zeros( ( , ))方法

b = np.zeros((3,4))
print(b)

13 创建一个全是1的矩阵 np.ones((2,3,4), dtype =np.int32)

14 创建一个列表, 从10 - 30 , 不包含30 并且每次叠加5, np.arange(10, 30, 5)

15 生成一个0-1的随机数列表  random.random((, ))  np.random.random((2,3))

16 自动生成一个平均分的列表 从0-2*pi, 100个元素, 慢慢增加到2*pi

from numpy import pi
np.linspace(0, 2*pi, 100)

17矩阵的加减 矩阵的加减与数学上一致

a = np.array([20, 30, 40, 50])
b = np.arange(4)
print(a)
print(b)
c = a - b
print(c)
c = c - 1
print(c)
b ** 2
print(b **2)
print(a < 35)

18 矩阵的乘法 如果是* 直接元素与元素相乘, 实现数学上的方法需要.dot方法

A = np.array([[1,1],
[0,1]])
B = np.array([[2,0],
[3,4]])
print(A)
print("-------")
print(B)
print("-------")
print(A*B)
print("-------")
print(A.dot(B))
print("-------")
print(np.dot(A,B))

19 对元素开根号 或者 求e运算

B = np.arange(3)
print(B)
print(np.exp(B))
print(np.sqrt(B))

20. 重要的是将列表变成 向量 ravel 方法, 还有一个矩阵的转置 .T方法

a = np.floor(10*np.random.random((3,4)))
print(a)
print("----------------")
print(a.ravel())
print("----------------")
a.shape = (6,2)
print(a)
print("----------------")
print(a.T)

21 一个是取整方法floor(), 还有一个是矩阵的拼接, hstack是行拼接 vstack是列拼接

a = np.floor(10*np.random.random((2,2)))
b= np.floor(10*np.random.random((2,2)))
print(a)
print("---------")
print(b)
print("---------")
print(np.hstack((a,b)))
print("---------")
print(np.vstack((a,b)))

22 矩阵的切分, 主要是将矩阵按照列切分 vsplit( )和按照行切分 hsplit( ),

a = np.floor(10*np.random.random((2,12)))
print(a)
print("-------------")
print(np.hsplit(a,3))
print("-------------")
print(np.hsplit(a,(3,4)))
a = np.floor(10*np.random.random((12,2)))
print(a)
print("-------------")
print(np.vsplit(a,3))

23 矩阵的复制 有三种办法

  23.1 第一种是 = , 两个矩阵共用内存地址, 改变一个, 另一个也改变

a = np.arange(12)
b = a
print(b is a)
b.shape = 3, 4
print(a.shape)
print(id(a))
print(id(b))

  23.2 浅复制 第二种是.view( ), 两个矩阵不共用内存, 但是指向的值是一样的

c = a.view()
print(c is a)
c.shape = 2,6
print(a.shape)

c[0,4] = 1234
print(c)
print("--------------")
print(a)

  23.3 指向不一样, 指向的值也不一样.copy()

d = a.copy()
print(d is a)
d[0,0] = 9999
print(d)
print(a)

24 寻找一个矩阵的各行最大值

data = np.sin(np.arange(20)).reshape(5, 4)
print(data)
ind = data.argmax(axis = 0)
print(ind)
data_max = data[ind, range(data.shape[1])]  #不太理解, 但是照做就行 可以打印出来
print(data_max)

25扩充一个矩阵 .tile方法

a = np.arange(0, 40, 10)
print(a)
b = np.tile(a, (4,3))
print(b)

26 对一个矩阵每行每列进行排序

a = np.array([[4, 3, 5],
[1, 2, 1]])
print(a)
b = np.sort(a, axis = 1)
print(b)
a.sort(axis = 1)
print("---------")
print(a)
a = np.array([4, 3, 1, 2])
j = np.argsort(a)
print("----------")
print(j)
print("----------")
print(a[j])

哈哈哈, 终于写完了, 这是今天所学的知识, 一定要坚持下去......洗洗睡吧

原文地址:https://www.cnblogs.com/jly1/p/9663653.html

时间: 2024-12-15 22:29:56

机器学习_第一节_numpy的相关文章

第三篇:属性_第一节:控件属性与属性的持久化

一.控件属性 首先,属性是各种.net语言的基本语法.而我们常说的控件属性是指控件类中用public修饰的属性. 见Lable的Text属性: [Bindable(true), DefaultValue(""), Localizable(true), PersistenceMode(PersistenceMode.InnerDefaultProperty), WebCategory("Appearance"), WebSysDescription("Lab

第一篇:初识ASP.NET控件开发_第一节:控件类及其继承关系

1)System.Web.UI.Control(以下简称Control) Control 类是包括自定义控件.用户控件和页在内的所有 ASP.NET 服务器控件的基类..定义由所有 ASP.NET 服务器控件共享的属性.方法和事件. 命名空间:System.Web.UI程序集:System.Web(在 system.web.dll 中) 2)System.Web.UI.WebControls.WebControl(以下简称WebControl) WebControl 类是 System.Web.

第二篇:呈现内容_第一节:Control&ldquo;画皮&rdquo;之旅

一.Control的呈现过程 在上个章节""生死有序"的控件生命周期"中,我们提到Render是控件开发的主角,但在控件树的"合成模式(Composite)"部分这位主角却缺席了(戏份太多的缘由).哦,好吧.主角现在登场. 1)控件树呈现的"合成模式(Composite)" 控件树的呈现过程是一个华丽的大圈,它从RenderControl(HtmlTextWriter writer)开始.从RenderChildrenInte

第一节,基本用法

推荐播客:我的Tensorflow学习之路 http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/basic_usage.html 项目代码: https://github.com/yongyehuang/Tensorflow-Tutorial 一 TensorFlow安装 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tsnsor(张量)意味着N维数组,Flo

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一、 除夕诗词概述 二、元日诗词概述 三、 元宵诗词概述 第二节:春节古诗词拾萃

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一. 除夕诗词概述 二.元日诗词概述 三. 元宵诗词概述 第二节:春节古诗词拾萃 一.腊祭诗词 二.祭灶诗词 三.除夕诗词 四.元旦诗词 五.人日诗词 六.元宵诗词 第一节:春节古诗词概述 中国的春节,作为除旧迎新的节日,时间相当长,从年前的腊月二十三,天空中就似乎弥漫了节日的气息.这种节日的气氛,在保持传统风俗较好的地方,甚至会持续到二月二龙抬头的时候,但欢度春节的高潮,应该说是自除夕始一直到上元之夜.因此,历代歌咏和反

linux基础知识第一节

用户接口: 是一种独特的应用程序,能够为用户提供启动其它应用程序的的机制 cli:命令提示符,用户输入要执行的命令即可, shell: 外壳 sh ,csh ,ksh ,   bash, zsh , tcsh gui: 通过点击操作来启动应用程序 gnome,  mainframe  大型机 多用户操作系统    多终端   终端:设备,显示器,鼠标,键盘 虚拟终端 表示:/dev/tty# ctrl-alt-f(1-6) 物理终端(控制终端)console 串行终端 伪终端 /dev/pts#

C#第一节课作业,HelloWorld

通过第一节课的学习,我们掌握了一些C#的基本知识.无论是C#的名字的由来还是有关Hello World和Console都让我受益匪浅. 回到家后,我首先实验了一下最简单的Hello World▼ 成功了√ 然后,我实验了一下省去System的写法▼ 成功了√ 这之后我又试了一下同文件中的调用▼ 成功了√ 之后是调节字和背景的颜色▼ 成功了√ 之后我尝试了不同文件的调用▼ 成功了√ 然后我试了下分步执行▼ 成功了√ 然后我设置了变量▼ 成功了√ 最后我试验了一下ResetColor的用法▼ 成功了

第一节初识MVC实现计算器

第一节初识MVC实现计算器 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab filetype=css: */ /*! * Base CSS for pdf2htmlEX * Copyright 2012,2013 Lu Wang * https://github.com/coolwanglu/pdf2htmlEX/blob/master/share/LICENSE */ /* Part 1: Web Page Lay

第一节 基本概念

变量 在erlang中所有的变量名必须以大写字母开头. 例如:X = 1.在shell中输入X就会得到1.erlang中的变量有一个特点,就是一旦被赋值不可改变. 例如:X = 1.已经在之前的shell被赋值,再次赋值X = 2.的时候就会报错** exception error: no match of right hand side value 2 "="在erlang中,变量获得值是一次成功模式匹配操作的结果.别的语言中,=是赋值语句,但是在erlang中,=是一次模式匹配操作