【发布时间】:2021-02-07 06:52:31
【问题描述】:
编写一个 Python 函数 matrixflip(m,d),将二维矩阵 m 作为输入 和方向 d,其中 d 是“h”或“v”。如果 d == 'h',函数应该返回
矩阵水平翻转。如果 d == 'v',该函数应返回翻转的矩阵 垂直。对于 d 的任何其他值,该函数应返回不变的 m。在所有情况下, 参数 m 应该不受函数的干扰
代码:
import numpy as np
def matrixflip(m,d):
m=np.array(m)
if d=='h':
m=np.flip(m,axis=1)
return m
if d=='v':
m=np.flip(m,axis=0)
return m
myl = [[1,2],[3,4]]
print (matrixflip(matrixflip(myl,'h'),'v'))
预期输出
[[4, 3], [2, 1]]
代码运行良好。但是如果我不想使用 NumPy 的 flip 预定义函数或者假设我使用的是在线编译器怎么办。在代码中如何实现?
【问题讨论】:
-
您编写自己的代码在
v情况下反转m,或在h情况下反转列表中的每个元素。您可以使用reversed()函数返回列表的反向副本。 -
这就是为什么我想知道numpy的翻转功能是如何工作的。你知道我的意思!
-
大部分 numpy 是用 C 编写的,因此它可以使用硬件加速。但是你不需要numpy,你可以使用普通的列表操作。它所做的只是反转列表。
-
如果您不介意,请告诉我如何在垂直轴上反转列表。
-
list(reversed(m))将在垂直轴上反转。
标签: python python-3.x numpy