python - Python中多维numpy数组的索引
问题描述
假设我有一个这样的numpy数组,
l = np.array([[[1, 2, 3]], [[1, 2, 3]]])
那么,
l.shape = (2, 1, 3)
也就是说,在l[x][y][z]中,x代表深度,y代表行数,z代表列数。C 语言也遵循同样的约定。
现在,如果我使用 OpenCV 读取图像,
img = cv2.imread('l.PNG')
因此,
img.shape = (798, 679, 3)
其中 3 是深度 (RGB),798 是长度(行),679 是图像的宽度(列)。
我不明白为什么这两种情况都不同。请帮忙。
解决方案
一对括号[]
为您提供矢量。
当您在向量内嵌套括号时,[ [a],[b],[c] ]
您会得到二维数组(别名矩阵),它可以表示为:
[a] # 2d array with 3 rows
[b]
[c]
图像只是二维数组。嵌套括号内的项目数表示矩阵的列数。以下:[ [1,2],[3,2],[2,3] ]
表示 2d 矩阵,具有 3 行和 2 列。
因为调用 imread 来读取带有颜色的图像,所以需要一个嵌套列表来表示颜色分量:B、G、R。所以你有[ [ [b,g,r] ], [b,g,r,], [b,g,r] ] ]
这个最里面的列表包含图像的深度。
在符号中[x][y][z]
:
- x 是行
- y 是 col
- z 是深度,颜色分量
推荐阅读
- android - 为什么 R8 不重命名所有方法和类?
- python - EOFError 用尽输入
- php - 使用 PHP Guzzle 的 Salesforce RestAPI 可以进行身份验证但无法进行查询
- ui-automation - 如何通过脚本在zephyr中标记katalon测试执行?
- kotlin - 如何使“不适当的阻塞方法调用”合适?
- kotlin - 声明抽象类时指定子类
- java - 从 SWT 3 切换到 SWT 4 时,JAVA SWT KeyDown 事件触发了 3 次而不是 1 次
- javascript - 如何用一个按钮调用两个函数
- fancybox - fancybox - 我可以将参数传递给链接到工具栏中的新自定义按钮的函数吗?
- node.js - 每个获取请求的更新日期