Matrix Multiply with Juypter

Posted on Do 07 Dezember 2017 in Juypter

In [1]:
import numpy as np
import functools

Heading 1

sdsd

head 2

sdsd

In [2]:
w1 = [1., 2., 3., 4.]
w2 = [4., 5., 6., 7.]
w3 = [3., 2., 1., 1.]
W = [w1, w2, w3]

v1 = [1., 4., 4., 6., 5.]
v2 = [1., 3., 1., 6., 2.]
v3 = [6., 3., 4., 2., 1.]
v4 = [1., 2., 4., 2., 3.]
V = [v1, v2, v3, v4]

# W = [[1., 2.],
#      [3., 4.]]
#
# V = [[5., 6.],
#      [7., 8.]]
In [3]:
def multiply(W, V):
    # implement in native python without any libraries
    V2 = list(zip(*V))  # transpose matrix
    r = [[sum(x * y for x, y in zip(row, col)) for col in V2] for row in W]
    return r


def test_multiply(W, V):
    X = multiply(W, V)
    Y = np.dot(np.array(W), np.array(V))  # numpy version
    # print(X)
    # print("\n")
    print(Y)
    np.testing.assert_allclose(X, Y, rtol=1e-05)
In [4]:
test_multiply(W, V)
[[ 25.  27.  34.  32.  24.]
 [ 52.  63.  73.  80.  57.]
 [ 12.  23.  22.  34.  23.]]