定义在python中作用于矩阵的函数

时间:2014-11-04 15:12:26

标签: python function matrix

我想定义一个相当简单的函数来交换矩阵中的两个条目,目前我有以下代码:

def swap (n[a][b] ,direction):

    if direction==1:             #to the left
        entry=n[a][b]
        n[a][b]=n[a-1][b]
        n[a-1][b]=entry

我正在努力找到一种方法来制作它,以便在我输入变量时,例如current(其中current =matrix[3][2]if子句的内容与目标矩阵上的a=3 ,b=2一起使用。

2 个答案:

答案 0 :(得分:0)

我不太确定这是不是你想要的,但至少它正在运行python代码:

import numpy as np

def swap(M, a, b, direction):
     if direction == 1:
         entry = M[a,b]
         M[a,b] = M[a-1,b]
         M[a-1,b] = entry

#create a test matrix
np.random.seed(10)
n = np.random.rand(10, 100, size=(3,2))

print n
n = swap(n,2,1,1)
print n

输出:

[[19 25]
 [74 38]
 [99 39]]

[[19 25]
 [74 39]
 [99 38]]

所以38和39被交换了。

答案 1 :(得分:0)

扩展@interjay注释,这是一个工作函数(假设矩阵是列表列表):

def swap(m, r, c, direction):
    if direction == 1:
        m[r][c], m[r-1][c] = m[r-1][c], m[r][c]

参数:

  • m是您要采取行动的矩阵,
  • r是您要交换的元素的一行,
  • c是您要交换的元素的列,
  • direction是交换的方向。

用法示例:

A = [[1, 2], [3, 4]]
print A
swap(A, 1, 1, 1)
print A

输出:

[[1, 2], [3, 4]]
[[1, 4], [3, 2]]

另请注意,通常,但不是必需的,第一个索引对应于行或行,第二个索引对应于列。在这种情况下,在您的代码中使用n[a][b]进行交换n[a-1][b]相当于将元素n [a] [b]向上移动一行,而不是向左移动。