gpt4 book ai didi

python - 这个切片是什么意思[:, :, 0]?

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:07 25 4
gpt4 key购买 nike

我正在努力理解 this code

我无法理解这条线在做什么。流变量是一组流向量,图像中的每个像素都有一个流向量(因此是一个二维数组)。

fx, fy = flow[:, :, 0], flow[:, :, 1]

任何帮助将不胜感激

最佳答案

让我们先简化表达式。您的代码:

fx, fy = flow[:, :, 0], flow[:, :, 1]

相当于:

fx = flow[:, :, 0]
fy = flow[:, :, 1]

所以现在归结为 flow[:, :, 0]。这意味着 flow 是一个至少具有三个维度的 numpy 数组(让我们将 N 定义为维度数)。然后 flow[:,:,0] 是一个 N-1 维数组,我们总是选择 0 作为第三维。

图像处理的上下文中,图像通常是维度为 w × h 的 3d 数组(假设它有颜色) × 3(三个颜色 channel )。所以在这里它意味着 flow[:,:,0] 将生成一个 w × h view where for每个像素,我们选择红色 channel (假设红色 channel 是第一个 channel )。

所以如果 flow 是一个 5 × 4 × 3 的矩阵,比如:

>>> flow
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]],

[[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23]],

[[24, 25, 26],
[27, 28, 29],
[30, 31, 32],
[33, 34, 35]],

[[36, 37, 38],
[39, 40, 41],
[42, 43, 44],
[45, 46, 47]],

[[48, 49, 50],
[51, 52, 53],
[54, 55, 56],
[57, 58, 59]]])

然后我们将为每个三元组获取第一个元素,使其成为:

>>> flow[:,:,0]
array([[ 0, 3, 6, 9],
[12, 15, 18, 21],
[24, 27, 30, 33],
[36, 39, 42, 45],
[48, 51, 54, 57]])

通过查询flow[:,:,1],我们得到:

>>> flow[:,:,1]
array([[ 1, 4, 7, 10],
[13, 16, 19, 22],
[25, 28, 31, 34],
[37, 40, 43, 46],
[49, 52, 55, 58]])

请注意这些是 View :如果您更改flow,它将fxfy<产生影响 也是,即使您以前做过这些作业也是如此。

关于python - 这个切片是什么意思[:, :, 0]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45551892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com