Пример #1
0
    def test_matrix_mul_matrix_invalid(self):
        m1_data = [[1, 2, 3], [4, 5, 6]]
        m2_data = [[6, 5, 4], [3, 2, 1]]
        m1 = Matrix(data=m1_data, dtype=np.int32)
        m2 = Matrix(data=m2_data, dtype=np.int32)

        with self.assertRaises(ValueError):
            m_prod = m1 * m2
Пример #2
0
    def test_matrix_mul_matrix(self):
        m1_data = [[1, 2, 3], [4, 5, 6]]
        m2_data = [[10, 11], [20, 21], [30, 31]]
        expected_data = [[140, 146], [320, 335]]
        m1 = Matrix(data=m1_data, dtype=np.int32)
        m2 = Matrix(data=m2_data, dtype=np.int32)

        m_prod = m1 * m2

        self.assertIsInstance(m_prod, Matrix)
        self.assertEqual(m_prod.dtype, 'int32')
        self.assertEqual(m_prod.shape, (2, 2))
        self.assertTrue(np.array_equal(m_prod.data, np.array(expected_data)))
Пример #3
0
    def test_matrix_sub(self):
        data1 = [[3, 2], [4, -3], [2, 0]]
        data2 = [[-4, 5], [1, -6], [0, 1]]
        expected_data = [[7, -3], [3, 3], [2, -1]]
        m1 = Matrix(data=data1)
        m2 = Matrix(data=data2, dtype=np.int32)

        matrix_sub = m1 - m2

        self.assertIsInstance(matrix_sub, Matrix)
        self.assertEqual(matrix_sub.shape, (3, 2))
        self.assertEqual(matrix_sub.dtype, 'float32')
        self.assertTrue(
            np.array_equal(matrix_sub.data, np.array(expected_data)))
Пример #4
0
    def test_matrix_add(self):
        data1 = [[3, 2], [4, -3], [2, 0]]
        data2 = [[-4, 5], [1, -6], [0, 1]]
        expected_data = [[-1, 7], [5, -9], [2, 1]]
        m1 = Matrix(data=data1, dtype=np.int32)
        m2 = Matrix(data=data2)

        matrix_add = m1 + m2

        self.assertIsInstance(matrix_add, Matrix)
        self.assertEqual(matrix_add.shape, (3, 2))
        self.assertEqual(matrix_add.dtype, 'int32')
        self.assertTrue(
            np.array_equal(matrix_add.data, np.array(expected_data)))
Пример #5
0
    def test_matrix_len(self):
        m_data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
        m = Matrix(data=m_data, dtype=np.int32)

        m_len = len(m)

        self.assertEqual(m_len, len(m_data))
Пример #6
0
    def test_matrix_initialize_dtype(self):
        matrix = Matrix(dtype=np.int32)

        self.assertIsInstance(matrix, Matrix)
        self.assertEqual(matrix.shape, (2, 2))
        self.assertEqual(matrix.dtype, 'int32')
        self.assertTrue(np.array_equal(matrix.data, np.array([[0, 0], [0,
                                                                       0]])))
Пример #7
0
    def test_matrix_initialize_default(self):
        matrix = Matrix()

        self.assertIsInstance(matrix, Matrix)
        self.assertEqual(matrix.shape, (2, 2))
        self.assertEqual(matrix.dtype, 'float32')
        self.assertTrue(
            np.array_equal(matrix.data, np.array([[0.0, 0.0], [0.0, 0.0]])))
Пример #8
0
    def test_matrix_mul_vector_invalid(self):
        m_data = [[1, 2, 3], [4, 5, 6]]
        v_data = [1, 2]
        m = Matrix(data=m_data, dtype=np.int32)
        v = Vector(data=v_data, dtype=np.int32)

        with self.assertRaises(ValueError):
            mv_prod = m * v
Пример #9
0
    def test_matrix_index_column(self):
        m_data = [[1, 2, 3], [4, 5, 6]]
        expected_data = [2, 5]
        m = Matrix(data=m_data, dtype=np.int32)

        indexed_value = m[:, 1]

        self.assertIsInstance(indexed_value, np.ndarray)
        self.assertTrue(np.array_equal(indexed_value, np.array(expected_data)))
Пример #10
0
    def test_matrix_mul_scalar(self):
        scalar = 3
        m_data = [[3, 4, 2], [2, -3, 0]]
        expected_data = [[9, 12, 6], [6, -9, 0]]
        matrix = Matrix(data=m_data, dtype=np.int32)

        s_matrix = matrix * scalar

        self.assertIsInstance(s_matrix, Matrix)
        self.assertEqual(s_matrix.dtype, 'int32')
        self.assertEqual(s_matrix.shape, (2, 3))
        self.assertTrue(np.array_equal(s_matrix.data, np.array(expected_data)))
Пример #11
0
    def test_matrix_mul_vector_2(self):
        m_data = [[0.8, 0.6, 0.4], [0.2, 0.4, 0.6]]
        v_data = [60, 50, 30]
        expected_data = [90, 50]
        matrix = Matrix(data=m_data)
        vector = Vector(data=v_data, dtype=np.int32)

        mv_prod = matrix * vector

        self.assertIsInstance(mv_prod, Vector)
        self.assertEqual(mv_prod.dtype, 'float32')
        self.assertEqual(mv_prod.size, 2)
        self.assertTrue(np.array_equal(mv_prod.data, np.array(expected_data)))
Пример #12
0
    def test_matrix_mul_vector_1(self):
        m_data = [[1, 2], [3, 4], [5, 6]]
        v_data = [7, 8]
        expected_data = [23, 53, 83]
        matrix = Matrix(data=m_data, dtype=np.int32)
        vector = Vector(data=v_data, dtype=np.int32)

        mv_prod = matrix * vector

        self.assertIsInstance(mv_prod, Vector)
        self.assertEqual(mv_prod.dtype, 'int32')
        self.assertEqual(mv_prod.size, 3)
        self.assertTrue(np.array_equal(mv_prod.data, np.array(expected_data)))
        self.assertTrue(np.array_equal(matrix.data, np.array(m_data)))
        self.assertTrue(np.array_equal(vector.data, np.array(v_data)))
Пример #13
0
    def test_matrix_sub_invalid(self):
        m1 = Matrix(data=[[1, 2], [3, 4]])
        m2 = Matrix(data=[[1, 2], [3, 4], [5, 6]])

        with self.assertRaises(ValueError):
            matrix_sub = m1 - m2
Пример #14
0
 def test_matrix_minimum_cols(self):
     with self.assertRaises(ValueError):
         matrix = Matrix(rows=2, cols=1)
Пример #15
0
    def test_matrix_iter(self):
        m_data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
        m = Matrix(data=m_data, dtype=np.int32)

        for i, item in enumerate(m):
            self.assertTrue(np.array_equal(item, np.array(m_data[i])))