numpy 数组访问方式_索引、切片、迭代
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 数组访问方式_索引、切片、迭代相关推荐
- 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
- 『Numpy』内存分析_高级切片和内存数据解析
在计算机中,没有任何数据类型是固定的,完全取决于如何看待这片数据的内存区域. 在numpy.ndarray.view中,提供对内存区域不同的切割方式,来完成数据类型的转换,而无须要对数据进行额外的co ...
- python中numpy数组的合并_基于Python中numpy数组的合并实例讲解
基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...
- 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 ...
- Oracle 表的访问方式(2)-----索引扫描
索引扫描(Index scan) 我们先通过index查找到数据对应的rowid值(对于非唯一索引可能返回多个rowid值),然后根据rowid直接从表中得到具体的数据,这种查找方式称为索引扫描或索引 ...
- 【python】list 删除列表中某个元素的3种方法;附加删除numpy数组中的指定索引元素的方法
方法 python中关于删除list中的某个元素,一般有三种方法: remove.pop.del 实例 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除 2.pop: 删除单个或多个 ...
- python计算警告:overflow encountered in exp(指数函数溢出)(sigmoid函数的numpy数组计算方式)
文章目录 前言 原因 解决方法 1.对sigmoid函数实现的优化,使`np.exp(-x)`的值始终小于1 2.用这个公式替代(没试过,不知好不好用) 前言 在计算sigmoid函数值时,出现了以下 ...
- python的数组批量赋值_python – 为numpy数组赋值的花式索引
通常,当您使用数组以这种方式索引另一个数组时,numpy期望每个数组R,C等具有相同的形状.例如,假设您要从此数组中提取非零值: >>> a array([[1, 3, 0, 0], ...
- Numpy 数组的其他函数--索引argwhere、去重unique、排序sort
1.numpy.argwhere() 该函数返回数组中非О元素的索引,若是多维数组则返回行.列索引组成的索引坐标. import numpy as np x=np.arange(6).reshape( ...
最新文章
- 卡巴斯基7.0防病毒官方中文版
- 多路隔离输出的车载辅助电源设计
- 移动Web单页应用开发实践——页面结构化
- kylin备份元数据(用于清除不用的数据方式)
- js禁止鼠标滑轮_js实现鼠标滑动到某个div禁止滚动
- 如何安全地迁移到Exchange 2003?
- 利用Gabor变换法分析纹理图像 matlab代码实现
- Thinking in Java 11.13 Foreach与迭代器
- 【Python之路Day12】网络篇之Paramiko
- python打印质数(素数)
- 新年札记:自学系统补完计划
- 解决表格边框不显示的问题
- 女孩子有什么颜值高的蓝牙耳机推荐?双12五款高音质游戏蓝牙耳机分享
- Ubuntu 下挂ISO到虚拟光驱的方法
- 按学号和姓名进行查询c语言,数据库实验4 数据查询(答案)
- VMware安装虚拟机过程中卡住问题
- 远程视频监控该如何组网
- CH340-为什么需要安装驱动?
- 【Web技术】959- JavaScript 如何在线解压 ZIP 文件?
- eyoucm arclist 文档列表