pythonnumpy矩阵索引_Numpy索引基础操作详解
对于索引与切⽚的概念相信⼤家应⼀定不会感到陌⽣,这属于 Python 的基础知识,在 Numpy 数组中同样也存在索引与切边的操作,它能够实现根据索引获取相应位置元素以及截取相应长度数组的⽬的,其实 Numpy ⼀维数组的索引切⽚操作和 Python 列表的操作相差⽆⼏,只存在⼀点点的区别,但是在本节我们主要研究对象是多维数组。
1. 多维数组的索引操作
1) 数组索引操作
我们知道 Numpy 数组的索引下标从 0 开始的,⽽且同样也可以使⽤负索引,这与 Python 列表中索引没有区别。下⾯我们来看⼀组例⼦,如何通过索引操作多维数组:
In [1]: import numpy as np
In [2]: array=np.arange(1,9)
#使⽤reshape变维⽣成3维数组
In [3]: shape(2,2,2)
Out[3]:
array([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
In [4]: print(array[0])
[[1 2]
[3 4]]
In [5]: print(array[0][0])
[1 2]
In [6]: print(array[0][0][0])
python获取数组长度
1
In [7]: print(array[0][0][1])
2
In [8]: print(array[0][1][0])
3
上⾯构成的三维数组可以看做是由两个(2,2)的⼆维数组构成的,多维数组通过索引取值,如上所⽰,⼀个位置 [0] 会获得第⼀个⼆维数组,第⼆个位置的 [0] 会得到⼀个维数组,只有最后⼀个的 [0] 才会得到最终的数字。就好⽐可以使⽤三层嵌套 for 循环对三维数组进⾏取值,如下所⽰:
In [5]: for i in range(array.shape[0]):
...: for j in range(array.shape[1]):
...: for k in range(array.shape[2]):
...: print(array[i, j, k])
1 2 3 4 5 6 7 8
提⽰:三维数组可以看做是(个数,⾏,列)的形式,array[0][1][0] 代表组成三维数组的第⼀个⼆维数组的第⼆⾏第⼀列的值,也就是 3。
2) 多维数组索引
针对多维数组的索引我们还可以使⽤如下形式进⾏取值:
In [2]: import numpy as np
In [3]: data=np.random.randn(2,3)
In [4]: data
Out[4]:
array([[ 2.28610225, -0.0166523 , 1.1315245 ],
[ 0.47336805, -0.59291117, 0.43233981]])
In [5]: data[0,2]
Out[5]: 1.131524504289503
上述使⽤⽅式等同于使⽤ [0][2] 的操作⽅法,这种⽅法叫做多数组索引。对于⼆维数组来说,我可以按照下图将 axis0 轴看做是“⾏”,⽽将 axis1 轴当做是列,如下所⽰:
图1:Numpy⼆维数组索引图
Numpy 数组的索引操作做,我们要重点理解它与 Python 列表的不同之处,还要掌握多数组索引的⽅法。在下⼀节我们将讲解 Numpy 数组的切⽚操作!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。