Python科学运算之存取元素

用整数作为下标可以获取数组中的某个元素

用范围作为下标获取数组的一个切片,包括a[3]不包括a[5]

省略开始下标,表示从a[0]开始

下标可以使用负数,表示从数组后往前数

下标还可以用来修改元素的值

打印所有的数据

范围中的第三个参数表示步长,2表示隔一个元素取一个元素

省略范围的开始下标和结束下标,步长为-1,整个数组头尾颠倒

步长为负数时,开始下标必须大于结束下标

和Python的列表序列不同,通过下标范围获取的新的数组是原始数组的一个视图。它与原始数组共享 同一块数据空间:

可以看到修改的元素

a的第5个元素也被修改为10

a = np.arange(10)a[5]a[3:5]a[:5]a[:-1]a[2:4] = 100,101aa[1:-1:2]a[::-1]a[5:1:-2]b = a[3:7]bb[2] = -10ba

以上的代码是使用的代码

以及可以试试它的绘图功能

NumPy还提供了存取元素的高级方法


使用整数序列当使用整数序列对数组元素进行存取时,将使用整数序列中的每个元素作为下标,整数序列可以是列表或者数组。使用整数序列作为下标获得的数组不和原始数组共享数据空间

获取x中的下标为3, 3, 1, 8的4个元素,组成一个新的数组

下标可以是负数

由于b和x不共享数据空间,因此x中的值并没有改变

整数序列下标也可以用来修改元素的值

x = np.arange(10,1,-1)xx[[3, 3, 1, 8]]b = x[np.array([3,3,-3,8])]b[2]=100bxx[[3,5,1]] = -1, -2, -3x

代码

x序列绘图

这种方法叫布尔序列


布尔数组中下标为0,2的元素为True,因此获取x中下标为0,2的元素

如果是布尔列表,则把True当作1, False当作0,按照整数序列方式获取x中的元素

布尔数组的长度不够时,不够的部分都当作False

布尔数组下标也可以用来修改元素

在现在的版本里面,对超出index的部分之间报错

我觉得是个好做法,因为一切都是可控的

布尔数组


产生一个长度为10,元素值为0-1的随机数的数组


数组x中的每个元素和0.5进行大小比较,得到一个布尔数组,True表示x中对应的值大于0.5

使用x>0.5返回的布尔数组收集x中的元素,因此得到的结果是x中所有大于0.5的元素的数组

绘图

x = np.arange(5,0,-1)xx[np.array([True, False, True, False, False])]x[[True, False, True, False, False]]x[np.array([True, False, True, True])]x[np.array([True, False, True, True])] = -1, -2, -3x%varexp --plot xx = np.random.rand(10)xx>0.5x[x>0.5]%varexp --plot x

多维数组的存取和一维数组类似,因为多维数组有多个轴,因此它的下标需要用多个值来表示, NumPy采用组元(tuple)作为数组的下标。

多维数组的创建方式

结构数组的创建


在C语言中我们可以通过struct关键字定义结构类型,结构中的字段占据连续的内存空间,每个结构体占用的内存大小都相同,因此可以很容易地定义结构数组。和C语言一样,在NumPy中也很容易对这 种结构数组进行操作。只要NumPy中的结构定义和C语言中的定义相同,NumPy就可以很方便地读取 C语言的结构数组的二进制数据,转换为NumPy的结构数组。

import numpy as nppersontype = np.dtype({'names':['name', 'age', 'weight'],'formats':['S32','i', 'f']})a = np.array([("Zhang",32,75.5),("Wang",24,65.2)],dtype=persontype)

a

我们先创建一个dtype对象persontype,通过其字典参数描述结构类型的各个字段。字典有两个关 键字:names,formats。每个关键字对应的值都是一个列表。names定义结构中的每个字段名,而 formats则定义每个字段的类型:

· S32 : 32个字节的字符串类型,由于结构中的每个元素的大小必须固定,因此需要指定字符串的长度

· i : 32bit的整数类型,相当于np.int32

· f : 32bit的单精度浮点数类型,相当于np.float32

然后我们调用array函数创建数组,通过关键字参数 dtype=persontype, 指定所创建的数组的元素类 型为结构persontype。运行上面程序之后,我们可以在IPython中执行如下的语句查看数组a的元素类型

(0)

相关推荐

  • 第79天:数据分析之 Numpy 初步

    NumPy 是 Python 中一个基本的科学计算库,包含以下特性: 强大的 N 维数组对象: 精巧的广播(broadcasting)功能: C/C++ 和 Fortran 代码集成工具: 实用的线性 ...

  • Python numpy中矩阵的基本用法汇总

    Python矩阵的基本用法 mat()函数将目标数据的类型转化成矩阵(matrix) 1,mat()函数和array()函数的区别 Numpy函数库中存在两种不同的数据类型(矩阵matrix和数组ar ...

  • Python科学运算之结构数组

    三体智子 http://www.bizhi88.com/bizhi/320045.html 聊起结构体,其实应该说说C语言的结构体~ 首先接触的C 数组允许定义可存储相同类型数据项的变量,而结构是 C ...

  • Selenium+python自动化82-只截某个元素的图

    前言 selenium截取全图小伙伴们都知道,曾经去面试的时候,面试官问:如何截图某个元素的图?不要全部的,只要某个元素...小编一下子傻眼了, 苦心人,天不负,终于找到解决办法了. 一.seleni ...

  • appium+python自动化49-yaml管理定位元素

    前言 如何高效管理定位元素,这个是很有学问的问题,也是面试必问的[以下纯属个人观点,勿喷!]. 有的人用xml管理页面定位元素,这种逼格略高,但是小编认为学习成本大,贼麻烦. 有的人提到用excel管 ...

  • 【Python科学计算】使用NumPy水平组合数组和垂直组合数组

    【Python科学计算】使用NumPy水平组合数组和垂直组合数组

  • 用python“科学”预测下《哪吒》票房

    最近几天,朋友圈和微博被<哪吒之魔童降世>刷屏了.不少看过的朋友都成为"自来水",力荐此片. 而它的市场表现也很给力,上映首日即破亿,5天超10亿,目前已成为国产动画片 ...

  • 3段极简代码带你入门Python科学计算库SciPy

    大数据DT 提供大数据.AI等领域干货学习资源的「宝藏号」,跟50万技术人共同成长,一起玩转大数据.Python.数据分析.数据科学.人工智能!还会有各种好玩又奇葩的数据解读,边学习边吃瓜! 510篇 ...

  • PS3科学运算Folding@home贡献斐然

    2007-04-26 09:45:47 自从PS3加入斯坦福大学的分布式科学运算项目Folding@home以来,短短一个月时间就已经成为贡献最突出的力量.参加项目的PS3 Cell BE处理器虽然数 ...

  • 【美丽科学】重现化学 | 元素燃烧:火树银花!

    rlyl 元素可以燃烧,一些元素单质在燃烧过程中会释放耀眼的光,一些元素单质的燃烧过程非常的绚丽,还有一些元素单质燃烧后会生成奇怪形状的化合物.作为<元素燃烧>的续集,该影片展示了锂.氢. ...

  • Python科学计算之简单环境搭建

    这个是对于Python做科学计算,一张相对完整的思维导图 在以前的科学计算是没有conda的地位的,都是这个python(x,y)的项目 你可以尝试的使用,我这里就是一个推荐 https://pyth ...