from iglhelpers import * ############# Dense Matrix Types ############# # Create a numpy dense array # 2 types are supported by the wrappers: float64 and int64 dense_matrix = np.array( [ (1,2,3), (4,5,6) , (7,8,9) ], dtype='float64') # libigl wrappers uses Eigen as a matrix type, you can easily convert between numpy and Eigen using # the helper function p2e. This operation duplicates the data. dense_matrix_eigen = p2e(dense_matrix) # The Eigen wrappers allows you to do operations directly on this matrix, # without having to convert back to numpy dense_matrix_eigen_2 = dense_matrix_eigen * dense_matrix_eigen # You can also inspect the data without converting it ... print("Eigen Matrix: \n", dense_matrix_eigen_2, "\n", sep='') # and access single elements print("Eigen Matrix(0,0): ", dense_matrix_eigen_2[0,0], "\n") # To convert it back to a numpy array, use the helper function e2p dense_matrix_2 = e2p(dense_matrix_eigen_2) print("Numpy Array: \n", dense_matrix_2, "\n", sep='') ############# Sparse Matrix Types ############# # Sparse matrices are handled in a very similar way # 2 types are supported by the wrappers: float64 and int64 sparse_matrix = sparse.rand(10, 10, 0.1) # To convert to the eigen forma use p2e sparse_matrix_eigen = p2e(sparse_matrix) # They can directly be used plotted or used in computations print("Sparse matrix Eigen: ", sparse_matrix_eigen, sep='') # And converted back with e2p sparse_matrix_2 = e2p(sparse_matrix_eigen) print("Sparse matrix Numpy: ", sparse_matrix_2.todense(), sep='')