Skip to main content
 首页 » 编程设计

python之用 * 运算符 reshape

2025年05月04日8pengyingh

你能帮我理解用*运算符 reshape 矩阵吗?尝试使用谷歌搜索并检查 reshape 的文档,但找不到任何与 *:

一起使用的东西
matrix = matrix.reshape(*matrix.shape, 1) 

跟进这个问题,你们中的任何一个能帮助我理解这段代码中行的用法吗?

gt_bg = np.all(image == background_color, axis=2) 
gt_bg = gt_bg.reshape(*gt_bg.shape, 1) 
n_image = np.concatenate((gt_bg, np.invert(gt_bg)), axis=2) 

所以首先它会搜索给定的图像,其中它具有与 background_color 变量相同的颜色(例如 [255,0,0])。 它返回一个具有图像形状的数组,例如 (1920,1080) 并且值是 True 或 False。 在第二行 gt_bg 之后具有形状 (1920,1080,1),在第三行之后 (1920,1080,2)。我认为该矩阵的每个像素的值都是 True 和 False 吗?所以如果 [1655,555,0] 是真的 [1655,555,1] 是假的?但是关于那个我不确定...这是用于训练卷积神经网络进行图像分割但我只是不明白为什么我会创建 n_image...

期待一些帮助...

干杯, 菲利克斯

请您参考如下方法:

如上所述使用的 * 运算符被视为带星号的表达式。

请在下面找到它的用法:

If the syntax *expression appears in the function call, expression must evaluate to an iterable. Elements from these iterables are treated as if they were additional positional arguments. For the call f(x1, x2, *y, x3, x4), if y evaluates to a sequence y1, …, yM, this is equivalent to a call with M+4 positional arguments x1, x2, y1, …, yM, x3, x4.

更多信息可以在这里找到:

https://docs.python.org/dev/reference/expressions.html#calls

希望对您有所帮助!