Пример #1
0
    def test_with_data(self):
        row = np.array([0, 3, 1, 0])
        col = np.array([0, 3, 1, 2])
        data = np.array([45., 55., 75., 95.])
        m = CSCMatrix((data, (row, col)), shape=(4, 4))
        data = m.data
        m2 = self.basic_m._with_data(data)
        self.assertTrue(np.allclose(m.todense(), m2.todense()))

        m2 = self.basic_m._with_data(data, copy=False)
        self.assertTrue(np.allclose(m.todense(), m2.todense()))
Пример #2
0
    def test_mul_sparse_matrix(self):
        #from pyomo.contrib.pynumero.sparse.block_matrix import BlockMatrix

        # test unsymmetric times unsymmetric
        m = self.basic_m
        dense_m = m.toarray()
        res = m * m
        dense_res = np.matmul(dense_m, dense_m)
        self.assertFalse(res.is_symmetric)
        self.assertTrue(np.allclose(res.toarray(), dense_res))

        # test symmetric result
        m = self.basic_m
        dense_m = m.toarray()
        res = m.transpose() * m
        dense_res = np.matmul(dense_m.transpose(), dense_m)
        self.assertTrue(res.is_symmetric)
        self.assertTrue(np.allclose(res.toarray(), dense_res))

        # test unsymmetric with rectangular
        m = self.basic_m
        dense_m2 = np.array([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0], [7.0, 8.0]])

        m2 = CSCMatrix(dense_m2)
        res = m * m2
        dense_res = np.matmul(m.toarray(), dense_m2)
        self.assertFalse(res.is_symmetric)
        self.assertTrue(np.allclose(res.toarray(), dense_res))

        # test unsymmetric with rectangular scipycsr
        m = self.basic_m
        dense_m2 = np.array([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0], [7.0, 8.0]])

        m2 = csc_matrix(dense_m2)
        with self.assertRaises(Exception) as context:
            res = m * m2

        # test product with symmetric matrix
        m = self.basic_m
        dense_m = m.todense()
        m2 = self.basic_sym_m
        dense_m2 = m2.todense()
        res = m * m2
        res_dense = np.matmul(dense_m, dense_m2)
        self.assertTrue(np.allclose(res.todense(), res_dense))
        """