• Numpy库的学习(一)


    今天来学习一下Python库中,支持高级大量的维度数组与矩阵运算的神奇的Numpy库

    Numpy同时也对数组运算提供大量的数学函数,对于大量计算运行效率极好

    是大量机器学习框架的基础库

    废话不多说,直接开整

    Numpy中最核心的结构就是ndarray数组

    Numpy中定义的最重要的对象是成为ndarray的N维数组类型

    它描述相同类型的元素集合。可以使用基于零的索引访问集合中的项目。大部分的数组操作仅仅是修改元数据部分,而不改变其底层的实际数据。

    数组的维数称为秩,简单来说就是如果你需要获取数组中一个特定元素所需的坐标数

    如a是一个2×3×4的矩阵,你索引其中的一个元素必须给定三个坐标a[x,y,z],故它的维数就是3。

    数组中所有元素的类型必须是一致的,Python支持的数据类型有整型、浮点型以及复数型

    但这些类型不足以满足科学计算的需求,因此NumPy中添加了许多其他的数据类型

    如bool、inti、int64、float32、complex64等。同时,它也有许多其特有的属性和方法。

    import numpy as np
    vector = np.array([5,10,15,20])
    matrix = np.array([[5,10,15],[20,25,30],[30,35,40]])
    print (vector)
    print (matrix)

     我们可以就看到,这里我写了一个行向向量,和一个矩阵向量

     可以得到如上图所示的结果,打印出一个行向量,和一个3行3列的矩阵向量

     ndarray中有很多个可以调用的属性,我们可以做一些分析等等操作

    首先讲一下shape属性

    vector = np.array([1,2,3,4])
    print(vector.shape)
    matrix = np.array([[5,10,15],[20,25,30],[30,35,40]])
    print (matrix.shape)

    可以看到,运行上面的代码我们得到这样一个结果

    shape就是说,我要看一下这个向量的维度是多少

    第一个向量,vector是一个行向量,所以说打印出来只有当前的向量中的元素个数4

    对于第二行结果来说, 他是一个3X3的矩阵向量,(3,3)表示我们当前打印的数据

    是一个3行3列的矩阵向量

    接下来看看这个例子

    number = np.array([1,2,3,4])
    print(number)
    number.dtype

    可以看到,运行上面的代码,我们可以得到一个dtype类型值

    这个值是表示我们的dtype的格式为int32,下面我们来做一些变化

    number = np.array([1,2,3,4.0])
    print(number)
    number.dtype

    我们可以看到,这里numpy帮我们自动转换了数据格式

    讲所有的整数类型,全部都换成了浮点型

    dtype也变成了float64类型,我们在做些变化

    number = np.array([1,2,3,'4'])
    print(number)
    number.dtype

    我们把4修改为字符串类型

    得到的结果,数据全都变成字符串类型了,数据类型也变了

    也就是说,在numpy的ndarray中,必须传进来的数据类型,都是同一种结构的

     我们现在来讲下如何使用numpy来读取文件数据

    我们这里有些测试数据,名为1.txt文件

    TestTxt = np.genfromtxt('1.txt',delimiter=".", dtype=str ,skip_header=1)
    print(TestTxt)

    这段代码的意思是,是用numpy中的genfromtxt方法读取文件

    参数为,1.txt文件名称,delimiter 以什么进行分割这里用 . 点号进行分割

    dtype =str 指定当前的数据类型为字符串

    skip_header=1 ,指定去掉第一行数据

    得到如下结果

    得到了文件中的内容,转换成了矩阵,读出来的数据都是一种矩阵数据格式

    当然这个文件读取方式不会经常用到,后面讲另外一个更好用的,pands库中的

    这里就不多讲numpy中的文件读取

    如果我想取出上面矩阵中的某个值,怎么操作呢?

    比如我们想取出第三行的第一个数据

    第四行的第二个数据

    out = TestTxt[2,0]
    out1 = TestTxt[3,1]
    print(out)
    print(out1)

    运行上诉代码

    可以看到,在numpy中,index下标是从0开始的,而不是1

    所以一定要切记

    我们在定义一个向量

    vector = np.array([5,10,15,20,25])
    print(vector[0:3])

    我想打印向量中的前三个值

    可以看到,这里的操作和python中的切片操作一样

    选取0到3,包括0但是不包括3

    那么对于矩阵来说也是一样的

    matrix = np.array([
    [1,2,3],
    [4,5,6],
    [7,8,9],
    ])
    print(matrix[:,1])

    我想打印当前矩阵所有样本的第二列

    matrix[:,1]

    那么这里用逗号隔开,第个表示行,第二个表示列,表示取所有行的第二列

    用:进行站位

    我想取所有行的前两列怎么取呢?

    matrix = np.array([
    [1,2,3],
    [4,5,6],
    [7,8,9],
    ])
    print(matrix[:,0:2])

    这里可以看到,取全部行,的0号,和1号列,2号不包含

    得到结果,也很简单

    那么我如何取某几行,某几列呢?方法也是一样的

    matrix = np.array([
    [1,2,3],
    [4,5,6],
    [7,8,9],
    ])
    print(matrix[1:3,0:2])

    取第2,3行的,1,2列

    那么可以得到

    好的,今天的numpy库就讲到这里。下次我们继续说。感觉阅读欢迎点赞转发。谢谢各位!

  • 相关阅读:
    js扩展Date对象的方法,格式化日期格式(prototype)
    JSP中的普通路径写法
    工作方向与目标
    Cookie工具类(获取cookie,设置cookie)
    读取普通java web项目下的WEB-INF目录下的配置文件(application.xml,xx.properties等配置文件)
    js单选和全选
    exits 和no exits
    Linux配置nginux
    Java读取利用java.util类Properties读取resource下的properties属性文件
    vue-devtools vue调试工具
  • 原文地址:https://www.cnblogs.com/ws17345067708/p/10687078.html
Copyright © 2020-2023  润新知