今天来学习一下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,''])
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库就讲到这里。下次我们继续说。感觉阅读欢迎点赞转发。谢谢各位!

Numpy库的学习(一)的更多相关文章

  1. Numpy库的学习(三)

    今天我们继续学习一下Numpy库的学习 废话不多说 ,开始讲 比如我们现在想创建一个0-14这样一个15位的数组 可以直接写,但是很麻烦,Numpy中就给我们了一个方便创建的方法 numpy中有一个a ...

  2. Numpy库的学习(五)

    今天继续学习一下Numpy库,废话不多说,整起走 先说下Numpy中,经常会犯错的地方,就是数据的复制 这个问题不仅仅是在numpy中有,其他地方也同样会出现 import numpy as np a ...

  3. Numpy库的学习(四)

    我们今天继续学习一下Numpy库 接着前面几次讲的,Numpy中还有一些标准运算 a = np.arange(3) print(a) print(np.exp(a)) print(np.sqrt(a) ...

  4. Numpy库的学习(二)

    今天来继续学习一下Numpy库的使用 接着昨天的内容继续 在Numpy中,我们如果想要进行一个判断使用“==” 我们来看下面的代码 vector = np.array([5,10,15,20,25]) ...

  5. numpy库的学习笔记

    一.ndarray 1.numpy 库处理的最基础数据类型是由同种元素构成的多维数组(ndarray),简称“数组”. 2.ndarray是一个多维数组的对象,ndarray数组一般要求所有元素类型相 ...

  6. python的numpy库的学习

    1.创建 array(序列类型).asarray.arange.ones.ones_like.zeros.zeros_like.empty.empty_like.eye.identity 2.运算 两 ...

  7. Python Pandas库的学习(一)

    今天我们来学习一下Pandas库,前面我们讲了Numpy库的学习 接下来我们学习一下比较重要的库Pandas库,这个库比Numpy库还重要 Pandas库是在Numpy库上进行了封装,相当于高级Num ...

  8. 【python】numpy库和matplotlib库学习笔记

    Numpy库 numpy:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成,并可与C++/Fortran语言无缝结合.树莓派Python v3默 ...

  9. Numpy库(个人学习笔记)

    一样,咱的计算机还是得先拥有Python,并且安装了Numpy库.有疑问的话可以看这里呦~~~~ 下面开讲: NumPy的主要对象是齐次多维数组.它是一个元素表(通常是数字),并且都是相同类型,由正整 ...

随机推荐

  1. 实现AutoMapper(1.0版本)

    最近有个需求就是实体之间自动转换,网上肯定有很多现成的实现,不过还是自己写了一个,就当对java高级特性的一个熟悉的过程.这中间包含了泛型,反射,lamada表达式.对于想了解java高级特性的人来说 ...

  2. Java的内存泄露

    Java的内存泄露 1.静态集合类引起内存泄漏 像HashMap.Vector等的使用最容易出现内存泄露,这些静态变量的生命周期和应用程序一致,他们所引用的所有的对象Object也不能被释放,因为他们 ...

  3. Dynamics 365 CE的插件/自定义工作流活动中调用Web API示例代码

    微软动态CRM专家罗勇 ,回复325或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 现在Web API越来越流行,有时候为了程序更加健壮,需要在插件 ...

  4. RMAN优缺点及RMAN备份及恢复步骤

    RMAN优缺点及RMAN备份及恢复步骤--以下部分来自网络转摘,仅供参考和OS命令备份方式相比,使用RMAN的优点1 备份执行期间不需要人工干预,因此减少了误操作的机会:2 可以有效的将备份和恢复结合 ...

  5. Visual Studio Code-批量在文末添加文本字段

    小技巧一例,在vs code或notepad++文末批量添加文本字段信息,便于数据信息的完整,具体操作如下: Visual Studio Code批量添加"@azureyun.com&quo ...

  6. Ambari自定义Service

    一.Ambari基本架构   img016.jpg Ambari Server 会读取 Stack 和 Service 的配置文件.当用 Ambari 创建服务的时候,Ambari Server 传送 ...

  7. Luogu P5284 [十二省联考2019]字符串问题

    好难写的字符串+数据结构问题,写+调了一下午的说 首先理解题意后我们对问题进行转化,对于每个字符串我们用一个点来代表它们,其中\(A\)类串的点权为它们的长度,\(B\)类串的权值为\(0\) 这样我 ...

  8. 福利:1H1G2M云服务器限时15元/月,买2送1,一年加6个月只要180元

    平时看文章做测试只能用虚拟机的有福了,现在腾迅做活动,1H1G2M的服务器一个月只需要15元,买2送1,最多可以送6个月. 这个比之前1H1G1M10元一月的要好一些 购买地址

  9. C# 三种打印方式含代码

    一:C#代码直接打印pdf文件(打印质保书pdf文件) 引用: 代码注释很详细了. private void btn_pdf_Click(object sender, RoutedEventArgs ...

  10. [Swift-2019力扣杯春季决赛]4. 有效子数组的数目

    给定一个整数数组 A,返回满足下面条件的 非空.连续 子数组的数目: 子数组中,最左侧的元素不大于其他元素. 示例 1: 输入:[1,4,2,5,3] 输出:11 解释:有 11 个有效子数组,分别是 ...