【问题标题】:Source of Predefined Function-numpy预定义函数的来源-numpy
【发布时间】: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


【解决方案1】:

numpy 文档中,像这样的函数有[source] 之类的。这会将您带到github 中的源代码。如果使用ipython?? 会显示代码。

flip 基本上做了一个 -1 步切片。复杂之处在于选择哪个轴。

m[::-1]
m[:,::-1]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 2013-06-14
    • 1970-01-01
    • 2013-02-24
    • 2011-09-10
    相关资源
    最近更新 更多