def matrix_multiply(A, B):
    n1, k1 = shape(A)
    n2, k2 = shape(B)
    if k1 != n2:
        raise ArithmeticError("incompatible shapes!")

    return make_matrix(n1, k2, partial(matrix_product_entry, A, B))
Example #2
0
def matrix_multiply(A, B):
    n1, k1 = shape(A)
    n2, k2 = shape(B)
    if k1 != n2:
        raise ArithmeticError("incompatible shapes!")

    return make_matrix(n1, k2, partial(matrix_product_entry, A, B))
def matrix_times_matrix(m1: Matrix, m2: Matrix) -> Matrix:
    nr1, nc1 = shape(m1)
    nr2, nc2 = shape(m2)
    
    assert nc1 == nr2, "must have (# o f columns in m1) == (# of rows in m2)"
    
    def entry_fn(i: int, j: int) -> float:
        """dot product of i-th row of m1 with the j-th column of m2"""
        return sum(m1[i][k]*m2[k][j] for k in range(nc1))
    
    return make_matrix(nr1,nc2, entry_fn)
def matrix_times_vector(m: Matrix, v: Vector) -> Vector:
    nr, nc = shape(m)
    n = len(v)
    assert nc == n, "must have (# of columns in m) == (# of elements in v)"
    
    return [dot(row, v) for row in m] # output has length nr
Example #5
0
def de_mean_matrix(A):
    """returns the result of subtracting from every value in A the mean 
    value of its column. The resulting matrix has mean 0 in every column"""
    nr, nc = shape(A)
    column_means, _ = scale(A)
    return make_matrix(nr, nc, lambda i, j: A[i][j] - column_means[j])