Хотите запрограммировать матрицу перестановок с дополнительным условием, не связанным с типом данных - PullRequest
0 голосов
/ 24 июня 2019

Я хотел бы сделать функцию матрицы перестановок, используя список списков в качестве матрицы перестановок. Вектор, чьи элементы будут заменены, может содержать данные None. Как я могу это сделать? Это код, который я написал.

def matrixmulitplikation(matrix, vektor):
    # Matrixmultiplikation N * q
    # example matrixmulitplikation([[1,0,0],[0,0,1],[0,1,0]],[[1,None,1]])
    # | 1 0 0 |   | 1    |    | 1    |
    # | 0 0 1 | x | None | =  | 1    |
    # | 0 1 0 |   | 1    |    | None |
    #
    transvek=list(map(list, zip(*vektor)))
    Nq_new = [[0] for i in range(len(matrix))]  
    for i in range(0, len(matrix)):
        puffer = 0
        for j in range(0, len(transvek)):
            if transvek[j][0]!=None:
                puffer = puffer + (matrix[i][j] * transvek[j][0])
            elif transvek[j][0]==None:
                if matrix[i][j]==0:
                    pass
                elif matrix[i][j]==1:
                    puffer = None
        Nq_new[i][0] = puffer
    transNq_new=list(map(list, zip(*Nq_new)))
    return transNq_new

Так, например, если я бегу матричное умножение ([[1,0,0], [0,0,1], [0,1,0]], [[1, None, 1]]) Тогда результат должен быть [[1,1, None]], потому что второй и третий элементы в векторе заменяются. Спасибо всем.

...