杨桃的Python进阶讲座16——数组array(六)一维数组和二维数组的索引和取值(配详细图解)

本人CSDN博客专栏:https://blog.csdn.net/yty_7

Github地址:https://github.com/yot777/

在进阶讲座8中讲过数组(矩阵)的维度,我们再看看多维矩阵的索引和取值方法

一维数组的索引和取值

和列表的索引和取值方法完全相同,如下:

一维数组的索引可以从左开始,也可以从右开始

如果从左开始,就是从0开始依次增大为0,1,2,……n-1,因此有n个元素的一维数组的最大索引n-1

如果从右开始,就是从-1开始依次减小为-1,-2,-3……-n,因此有n个元素的一维数组的最小索引-n

一维数组s[m:n]取值方式是从左往右

m是列表元素的索引值,从0开始

n是列表元素索引值减1

m始终比n小

注意:m、n既可以是正数,零,也可以是负数。

简便记忆法:

从列表s的第m个元素开始,取出来n-m个元素

举例:

>>> import numpy as np
>>> s = np.array(['a','b','c','d','e','f'])
>>> s[0]
'a'
>>> s[-2]
'e'
>>> s[5]
'f'
>>> s[0:5]
array(['a', 'b', 'c', 'd', 'e'], dtype='<U1')
>>> s[1:5]
array(['b', 'c', 'd', 'e'], dtype='<U1')
>>> s[-5:-1]
array(['b', 'c', 'd', 'e'], dtype='<U1')

用下图可以更直观的理解:

如果m缺失,变成s[:n],表示从最左边的元素开始,一直取到索引值为n-1的元素

如果n缺失,变成s[m:],表示从索引值为m的元素开始,一直取到最右边的元素

如果m和n都缺失,变成s[:],表示取列表的所有元素

举例:

>>> s[2:]
array(['c', 'd', 'e', 'f'], dtype='<U1')
>>> s[:2]
array(['a', 'b'], dtype='<U1')
>>> s[-2:]
array(['e', 'f'], dtype='<U1')
>>> s[:-2]
array(['a', 'b', 'c', 'd'], dtype='<U1')
>>> s[:]
array(['a', 'b', 'c', 'd', 'e', 'f'], dtype='<U1')

用下图可以更直观的理解:

二维数组的索引和取值

创建一个numpy二维数组x,如下所示:

>>> import numpy as np
>>> x=np.array([[1,2],[3,4],[5,6]])
>>> print(x)
[[1 2]
 [3 4]
 [5 6]]

该二维数组实际上是一个3行2列(3, 2)矩阵,即

图示:

二维数组的索引,本质上和一位数组完全类似,采用从左往右元素),从上往下元素)的方式,从0开始

如果[ ]以数字或者单冒号开头,表示取行元素,举例:

>>> print(x[0])    #取x矩阵的第0行
[1 2]
>>> print(x[1])    #取x矩阵的第1行
[3 4]
>>> print(x[2])    #取x矩阵的第2行
[5 6]
>>> print(x[0:2])  #取x矩阵的第0行到第2-1=1行
[[1 2]
 [3 4]]
>>> print(x[1:])    #取x矩阵的第1行开始到最后的所有行
[[3 4]
 [5 6]]
>>> print(x[:3])    #取x矩阵的第0行到第3-1=2行
[[1 2]
 [3 4]
 [5 6]]

以图示来说明:

如果[ ]以冒号逗号(即:,)开头,表示取列元素,举例:

>>> print(x[:,0])    #取x矩阵的第0列
[1 3 5]
>>> print(x[:,1])    #取x矩阵的第1列
[2 4 6]
>>> print(x[:,0:1])   #取x矩阵的第0列到第1-1=0列
[[1]
 [3]
 [5]]
>>> print(x[:,:1])    #取x矩阵的第0列到第1-1=0列
[[1]
 [3]
 [5]]
>>> print(x[:,1:])    #取x矩阵的第1列开始到最后的所有列
[[2]
 [4]
 [6]]
>>> print(x[:,0:2])   #取x矩阵的第0列开始到第2-1=1列
[[1 2]
 [3 4]
 [5 6]]

以图示来说明:

如果想取得二维数组的具体元素,在[ ]中需要以该元素所在的[行号][列号]来表示,举例:

>>> print(x[0][1])   #取x矩阵的第0行的第1个元素
2
>>> print(x[2][0])   #取x矩阵的第2行的第0个元素
5

以图示来说明:

也可以使用[:,列号][行号]来表示某一具体的元素,但用得极少,举例:

>>> print(x[:,0][2])   #取x矩阵第0列的第2个元素
5
>>> print(x[:,1][1])   #取x矩阵第1列的第1个元素
4

 

以图示来说明:

总结

一维数组的索引和列表完全相同,可以从左开始,也可以从右开始

如果从左开始,就是从0开始依次增大为0,1,2,……n-1,因此有n个元素的一维数组的最大索引n-1

如果从右开始,就是从-1开始依次减小为-1,-2,-3……-n,因此有n个元素的一维数组的最小索引-n

一维数组s[m:n]取值方式是从左往右,m是列表元素的索引值,从0开始;n是列表元素索引值减1

二维数组的索引,本质上和一位数组完全类似,采用从左往右元素),从上往下元素)的方式,从0开始

如果[ ]以数字或者单冒号开头,表示取行元素

如果[ ]以冒号逗号(即:,)开头,表示取列元素

如果想取得二维数组的具体元素,在[ ]中需要以该元素所在的[行号][列号]来表示。

本人CSDN博客专栏:https://blog.csdn.net/yty_7

Github地址:https://github.com/yot777/

如果您觉得本篇本章对您有所帮助,欢迎关注、评论、点赞!Github欢迎您的Follow、Star!

发布了55 篇原创文章 · 获赞 16 · 访问量 6111

猜你喜欢

转载自blog.csdn.net/yty_7/article/details/104697996
今日推荐