numpy 数组的访问方式主要由索引(indexing)、切片(slicing)、迭代(iterating),本节中主要以例子为讲解其访问方式

一维数组

一维数组访问方式,首先创建一个一维数

>>> a = np.arange(10)**3
>>> a
array([  0,   1,   8,  27,  64, 125, 216, 343, 512, 729])

按照索引方式 访问数组a的,其中index是从0开始, 分别访问index为2 和5的元素:

>>> a[2]
8
>>> a[5]
125

有的时候需要连续访问几个元素,可以用到切片访问,切片相当切蛋糕一样,从数组a中切出一块(块中的元素index是连续的),例如连续访问a中从2到4的几个元素

>>> a[2:5]
array([ 8, 27, 64])

注意以上切片范围左边为半闭区间,右边为半开区间即元素从2开始,到5之前结束,并不等于5, a[c:d]大于等于c小于d的元素集合

还可以按照指定的间隔,默认情况下间隔为1,将间隔该为2,修改index 6之前的元素为-1000:

>>>a[:6:2] = -1000
>>>a
array([-1000,     1, -1000,    27, -1000,   125,   216,   343,   512,   729])

继续进行 如果 间隔为-1,则将其整个数组反转,次序颠倒

>>> a[ : :-1]
array([  729,   512,   343,   216,   125, -1000,    27, -1000,     1, -1000])

除了上述访问,还可以迭代访问元素中的所有值

>>> for i in a:
...     print(i**(1/3.))
...
nan
1.0
nan
3.0
nan
5.0
6.0
7.0
8.0
9.0

多维数组

多维数组可以按照每轴(维)的index 进行处理,可以以元组形式表示,没维的index使用逗号分开

首先创建一个多维数组

import numpy as np>>>def f(x,y):return 10*x+y>>> b = np.fromfunction(f,(5,4),dtype=int)
>>> b
array([[ 0,  1,  2,  3],[10, 11, 12, 13],[20, 21, 22, 23],[30, 31, 32, 33],[40, 41, 42, 43]])

按照索引访问第2行第三列的元素,b[2,3]:

>>> b[2,3]
23

按照切片方式,访问每行的 第一列的元素

>>>b[0:5, 1]
array([ 1, 11, 21, 31, 41])

访问每行的 第一列的元素,还可以使用以下方式

>>>b[ : ,1]
array([ 1, 11, 21, 31, 41])

访问第1和2行所有的元素:

>>>  b[1:3, : ]
array([[10, 11, 12, 13],[20, 21, 22, 23]])

迭代访问,可以按照每行进行迭代:

>>> for row in b:print(row)[0 1 2 3]
[10 11 12 13]
[20 21 22 23]
[30 31 32 33]
[40 41 42 43]

当提供的索引数数少于轴数是,缺失的那部分则认为为全部的, b[-1]代表访问最后一行元素

>>> b[-1]
array([40, 41, 42, 43])

带小数点省略的访问方式

除了上述几种访问方式是,还有另外一种方式就是使用小数点进行省略'...',小数点代表了访问该轴(维)的所有元素,例如

有一个5轴(维)的数组,

  • x[1,2,...]相当于x[1,2,:,:,:]
  • x[...,3]相当于x[:,:,:,:,3]
  • x[4,...,5,:]相当于x[4,:,:,5,:]

例子如下:

import numpy as npc=np.array([[[  0,  1,  2],[ 10, 12, 13]],[[100,101,102],[110,112,113]]])
print("c: ", c)
print("c shape: ", c.shape)
print("c[1,...]: ", c[1,...])
print("c[...,2]: ", c[...,2])

运行结果:

c:  [[[  0   1   2][ 10  12  13]][[100 101 102][110 112 113]]]
c shape:  (2, 2, 3)
c[1,...]:  [[100 101 102][110 112 113]]
c[...,2]:  [[  2  13][102 113]]

多维迭代

一般多维迭代是按照一行进行迭代访问的,例如

import numpy as npc=np.array([[[  0,  1,  2],[ 10, 12, 13]],[[100,101,102],[110,112,113]]])
for row in c:print(row)

运行结果:

[[ 0  1  2][10 12 13]]
[[100 101 102][110 112 113]]

也可以按照每个具体的元素进行访问

import numpy as npc=np.array([[[  0,  1,  2],[ 10, 12, 13]],[[100,101,102],[110,112,113]]])
for element in c.flat:print(element)

运行结果:

0
1
2
10
12
13
100
101
102
110
112
113

numpy 数组访问方式_索引、切片、迭代相关推荐

  1. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  2. 『Numpy』内存分析_高级切片和内存数据解析

    在计算机中,没有任何数据类型是固定的,完全取决于如何看待这片数据的内存区域. 在numpy.ndarray.view中,提供对内存区域不同的切割方式,来完成数据类型的转换,而无须要对数据进行额外的co ...

  3. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  4. numpy和pandas的基础索引切片

    Numpy的索引切片 索引 In [72]: arr = np.array([[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]]) In [73]: arr Out[73]: a ...

  5. Oracle 表的访问方式(2)-----索引扫描

    索引扫描(Index scan) 我们先通过index查找到数据对应的rowid值(对于非唯一索引可能返回多个rowid值),然后根据rowid直接从表中得到具体的数据,这种查找方式称为索引扫描或索引 ...

  6. 【python】list 删除列表中某个元素的3种方法;附加删除numpy数组中的指定索引元素的方法

    方法 python中关于删除list中的某个元素,一般有三种方法: remove.pop.del 实例 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除 2.pop: 删除单个或多个 ...

  7. python计算警告:overflow encountered in exp(指数函数溢出)(sigmoid函数的numpy数组计算方式)

    文章目录 前言 原因 解决方法 1.对sigmoid函数实现的优化,使`np.exp(-x)`的值始终小于1 2.用这个公式替代(没试过,不知好不好用) 前言 在计算sigmoid函数值时,出现了以下 ...

  8. python的数组批量赋值_python – 为numpy数组赋值的花式索引

    通常,当您使用数组以这种方式索引另一个数组时,numpy期望每个数组R,C等具有相同的形状.例如,假设您要从此数组中提取非零值: >>> a array([[1, 3, 0, 0], ...

  9. Numpy 数组的其他函数--索引argwhere、去重unique、排序sort

    1.numpy.argwhere() 该函数返回数组中非О元素的索引,若是多维数组则返回行.列索引组成的索引坐标. import numpy as np x=np.arange(6).reshape( ...

最新文章

  1. 卡巴斯基7.0防病毒官方中文版
  2. 多路隔离输出的车载辅助电源设计
  3. 移动Web单页应用开发实践——页面结构化
  4. kylin备份元数据(用于清除不用的数据方式)
  5. js禁止鼠标滑轮_js实现鼠标滑动到某个div禁止滚动
  6. 如何安全地迁移到Exchange 2003?
  7. 利用Gabor变换法分析纹理图像 matlab代码实现
  8. Thinking in Java 11.13 Foreach与迭代器
  9. 【Python之路Day12】网络篇之Paramiko
  10. python打印质数(素数)
  11. 新年札记:自学系统补完计划
  12. 解决表格边框不显示的问题
  13. 女孩子有什么颜值高的蓝牙耳机推荐?双12五款高音质游戏蓝牙耳机分享
  14. Ubuntu 下挂ISO到虚拟光驱的方法
  15. 按学号和姓名进行查询c语言,数据库实验4 数据查询(答案)
  16. VMware安装虚拟机过程中卡住问题
  17. 远程视频监控该如何组网
  18. CH340-为什么需要安装驱动?
  19. 【Web技术】959- JavaScript 如何在线解压 ZIP 文件?
  20. eyoucm arclist 文档列表

热门文章

  1. web前端vue问题小结及相关面试题总结
  2. JEECG - 基于代码生成器的J2EE智能开发框架 续一: JEECG框架搭建步骤 [更新版]
  3. 数据仓库之电商数仓-- 1、用户行为数据采集
  4. UML类图操作(一)
  5. 5分钟掌握var,let和const异同
  6. IDEA中一个工程多个模块(module)分别提交到不同的git服务器
  7. Windows批处理符号简介、常用Dos命令
  8. Oracle之自治事务
  9. 设计模式之Strategy(策略模式系列1)
  10. Delphi 7 以来的语法等变化