旋转矩阵的函数返回输入

系绳

我试图回答这个视频中的面试问题,作为 Python 编程练习,我决定使用 Nick 解释的第一种方法,但由于某种原因,我的函数总是返回一个与输入相同的矩阵,我真的很难找到错误

我写的函数是:

def swap(inp):
    for i in range(len(inp)-1):
        for j in range(len(inp[i])-1):
            temp = inp[i][j]
            inp[i][j] = inp[j][i]
            inp[j][i] = temp
    return inp
诺曼·汉特克

我不打算观看整个视频,但我点击了四周,看到“第 1 步”c++ 代码看起来与您的非常相似。我假设您正在尝试复制它。

首先,不确定你想要什么 -1。如果这样做,您将保留最后一行和最后一列。其次,您从 j=0 开始内部循环,但在视频中它从 j=i 开始。

您的功能经过这些修改:

def swap(inp):
for i in range(len(inp)):
    for j in range(i, len(inp[i])):
        temp = inp[i][j]
        inp[i][j] = inp[j][i]
        inp[j][i] = temp
return inp

如果你只给 一个参数range,它假定从 0 开始。如果你给它两个参数,它是从第一个参数到第二个参数,在这种情况下从ito len(inp[i])

编辑:顺便说一下,这是一个使用 numpy 函数实现相同结果的解决方案。乍一看,我认为转置输入 ( inp.T) 对应于步骤 1,并且np.flip(..., 1)是水平翻转。

def swap_numpy_style(inp):
    return np.flip(inp.T, 1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章