Source code for pyleecan.Methods.Import.ImportMatrixXls.get_data

# -*- coding: utf-8 -*-
from pandas import read_excel, ExcelFile
from ....Methods.Import.ImportMatrixXls import XlsFileError
from os.path import isfile

from ....Functions.path_tools import abs_file_path


[docs]def get_data(self): """Return the object's matrix Parameters ---------- self : ImportMatrixVal An ImportMatrixVal object Returns ------- matrix: ndarray The object's matrix """ file_path = abs_file_path(self.file_path, is_check=False) if not isfile(file_path): raise XlsFileError("ERROR: The xls file doesn't exist " + self.file_path) if self.usecols == "": self.usecols = None if self.is_allsheets: xl = ExcelFile("file.xlsx") Nsheets = len(xl.sheet_names) for i in range(Nsheets): df = read_excel( file_path, i, header=None, usecols=self.usecols, skiprows=self.skiprows ) values = df.values # Extract axes if self.axes_colrows is not None: axes_dict = {} if len(axes_dict) == 1: is_first = False else: is_first = True for axis in self.axes_colrows: if self.axes_colrows[axis] == "1": if is_first: axes_dict[axis] = values[0, 1:] is_first = False else: axes_dict[axis] = values[0, :] values = values[1:, :] elif self.axes_colrows[axis] == "A": if is_first: axes_dict[axis] = values[1:, 0] is_first = False else: axes_dict[axis] = values[:, 0] values = values[:, 1:] else: raise Exception( "ERROR: axes_colrows should contain either '1' or 'A'" ) # Transpose if necessary values = self.edit_matrix(values) # Store in 3D matrix if i == 0: values_3d = values[..., None] else: values_3d.append(values_3d, values[..., None], axis=-1) if self.axes_colrows is not None: return values_3d, axes_dict else: return values_3d else: df = read_excel( file_path, self.sheet, header=None, usecols=self.usecols, skiprows=self.skiprows, ) values = df.values # Extract axes if self.axes_colrows is not None: axes_dict = {} if len(axes_dict) == 1: is_first = False else: is_first = True for axis in self.axes_colrows: if self.axes_colrows[axis] == "1": if is_first: axes_dict[axis] = values[0, 1:] is_first = False else: axes_dict[axis] = values[0, :] values = values[1:, :] elif self.axes_colrows[axis] == "A": if is_first: axes_dict[axis] = values[1:, 0] is_first = False else: axes_dict[axis] = values[:, 0] values = values[:, 1:] else: raise Exception( "ERROR: axes_colrows should contain either '1' or 'A'" ) else: axes_dict = None # Transpose if necessary values = self.edit_matrix(values) if self.axes_colrows is not None: return values, axes_dict else: return values