对Numpy库ndarray对象(矩阵)中的数据的访问选取操作示例积累
Posted 昊虹算法
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对Numpy库ndarray对象(矩阵)中的数据的访问选取操作示例积累相关的知识,希望对你有一定的参考价值。
为了说明这个问题,选初始化一个矩阵B,其尺寸为两行四列三通道。
代码如下:
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
运行结果如下:
从其shape属性可以看出,B矩阵的尺寸的确为三通道,两行,四列。其内容如下:
目录
- 示例1:选取矩阵B的0通道
- 示例2:选取矩阵B的1通道
- 示例3:使用ndarray对象的切片操作同时选取矩阵的0通道和1通道
- 示例4:选取矩阵B的第1通道的第1行
- 示例5:选取矩阵B的第1通道第1行的第1列
- 示例6:选取矩阵B的第1通道第1行的第1列到第3列
- 示例7:选取矩阵B的第1通道第0行和第1行的第1列到第3列
- 示例8:选取非连续的通道、行或列的方法
- 总结
示例1:选取矩阵B的0通道
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
C = B[1] # 选取矩阵B的0通道
运行结果如下:
示例2:选取矩阵B的1通道
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
C = B[1] # 选取矩阵B的1通道
运行结果如下:
示例3:使用ndarray对象的切片操作同时选取矩阵的0通道和1通道
关于ndarray对象的切片操作的更多内容,可以参考我的另一篇博文,链接如下:
https://blog.csdn.net/wenhao_ir/article/details/123034635
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
D = B[0:2] # 同时选取矩阵的第0通道和第1通道
注意:切片操作的区间是左开右闭的,所以是D = B[0:2]而不是D = B[0:1]
运行结果如下:
示例4:选取矩阵B的第1通道的第1行
有两种方法可以实现这个操作。
方法一:
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
E = B[1][1] # 选取矩阵B的第1通道的第1行的第一种方法
运行结果如下:
方法二:
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
F = B[1, 1] # 选取矩阵B的第1通道的第1行的第二种方法
示例5:选取矩阵B的第1通道第1行的第1列
同样有两种方法。
方法一:
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
G = B[1][1][1] # 选选取矩阵B的第1通道第1行的第1列的第一种方法
方法二:
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
H = B[1, 1, 1] # 选选取矩阵B的第1通道第1行的第1列的第二种方法
示例6:选取矩阵B的第1通道第1行的第1列到第3列
有三种方法:
方法一:
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
J = B[1][1][1:4] # 选取矩阵B的第1通道第1行的第1列到第3列的第一种方法
方法二:
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
K = B[1, 1, 1:4] # 选取矩阵B的第1通道第1行的第1列到第3列的第二种方法
方法三:
由于第三列就是最后一列,所以可下像下面这样写:
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
L = B[1, 1, 1:] # 选取矩阵B的第1通道第1行的第1列到第3列的第一种方法
示例7:选取矩阵B的第1通道第0行和第1行的第1列到第3列
从上面可以看出,这个其实也有很多写法,这里就只列举两种。
方法一:
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
M = B[1, 0:2, 1:] # 选取矩阵B的第1通道第0行和第1行的第1列到第3列
方法二:
import numpy as np
B = np.array([[[11, 12, 13, 14],
[15, 16, 17, 18]],
[[19, 20, 21, 22],
[23, 24, 25, 26]],
[[27, 28, 29, 30],
[31, 32, 33, 34]]])
N = B[1][0:2, 1:] # 选取矩阵B的第1通道第0行和第1行的第1列到第3列
示例8:选取非连续的通道、行或列的方法
选取非连续的通道、行或列的方法我已写在另一篇博文中,链接如下:
Python中使用元组对ndarray矩阵的某个维度进行选取和调序的操作
总结
从上面的示例中我们可以总结出以下重要认识:
1 ndarray对象在数据选取时既可以用“[ ]”区分不同的维度,也可以用逗号分隔。
2 维度的顺序借用图像中维度的概念,依次为通道维度→行维度→列维度。
相关阅读:
numpy库中ndarray对象切片操作的参数意义
以上是关于对Numpy库ndarray对象(矩阵)中的数据的访问选取操作示例积累的主要内容,如果未能解决你的问题,请参考以下文章