要求计算逻辑矩阵P = mn

时间:2012-11-15 20:49:27

标签: python

我已经获得了一些现成的代码以及输入和预期的输出现在我需要找到一种方法来计算输入的输出

这是我给出的代码

3 2 4

T T
F F
T T

F F F F
T T T T

and i have been asked to calculate the logical matrix P=mn

解决

2 个答案:

答案 0 :(得分:1)

 for i in range(len(M)):
     for j in range(len(N[0])):
         for k in range(len(N)):
             P[i][j] += M[i][k] * N[k][j]

这是包含整数的矩阵的基本模式。 你必须做两个步骤: 1)启动P矩阵 2)使用'T'和'F'值而不是整数运算。

完成第2步的最简单方法可能是使用eval函数:

T = 1  # eval('T') will be 1
F = 0  # eval('F') will be 0

然后换行:

P[i][j] += eval(M[i][k]) * eval(N[k][j])

但您仍需要将值从P转换为'T'或'F'值。希望这会有所帮助。

M = [['T', 'T'], ['F', 'F'], ['T', 'T']]             #sample values
N = [['F', 'F', 'F', 'F'], ['T', 'T', 'T', 'T']]

T = 1
F = 0

P = [] 

for i in range(len(M)):                              #result matrix creation
    P.append([None] * len(N[0]))

for i in range(len(M)):
    for j in range(len(N[0])):
        P[i][j] = 0                                  #initialization
        for k in range(len(N)):
            P[i][j] |= eval(M[i][k]) & eval(N[k][j]) #logical operators
        P[i][j] = 'T' if P[i][j] else 'F'            #conversion back to 'T' and 'F'

print P

这会产生输出:

[['T', 'T', 'T', 'T'], ['F', 'F', 'F', 'F'], ['T', 'T', 'T', 'T']]

答案 1 :(得分:0)

我会看看http://www.syntagmatic.net/matrix-multiplication-in-python/,特别是乘法函数的工作原理。