Convertir NumPy a Excel

Introducción a NumPy

NumPy (Numerical Python) es una extensión de cálculo numérico de código abierto de Python. Esta herramienta se puede utilizar para almacenar y procesar matrices grandes, que es mucho más eficiente que la estructura de listas anidadas de Python (que también se puede utilizar para representar matrices). Admite una gran cantidad de matrices dimensionales y operaciones de matrices, y también proporciona una gran cantidad de bibliotecas de funciones matemáticas para operaciones de matriz.

Las principales funciones de NumPy:

  1. Ndarray, un objeto de matriz multidimensional, es una estructura de datos rápida, flexible y que ahorra espacio.
  2. Operaciones de álgebra lineal, incluyendo multiplicación de matrices, transposición, inversión, etc.
  3. Transformada de Fourier, realizando una transformada rápida de Fourier en una matriz.
  4. Operación rápida de matrices de punto flotante.
  5. Integrar código en lenguaje C en Python para que se ejecute más rápido.

Usando la API Aspose.Cells for Python via .NET, puedes convertir la matriz NumPy a Excel, OpenOffice, Pdf, Json y muchos otros formatos diferentes.

Cómo convertir la matriz NumPy a Libro de Excel

Aquí tienes un ejemplo de código para demostrar cómo importar datos de una matriz NumPy a un archivo de Excel utilizando Aspose.Cells for Python via .NET:

  1. Cree un array de NumPy de muestra.
  2. Recorra el array de NumPy e importe los datos usando Aspose.Cells para Python via .NET.
import numpy as np
import pandas as pd
import aspose.cells
from aspose.cells import Workbook, Worksheet, Range, CellsHelper
def put_cell_value(cells, raw_value, row , column):
cell = cells.get(row , column)
dtype = type(raw_value)
match dtype:
case np.bool_ :
value = bool(raw_value)
case np.int_ :
value = int(raw_value)
case np.intc :
value = int(raw_value)
case np.intp :
value = int(raw_value)
case np.int8 :
value = int(raw_value)
case np.int16 :
value = int(raw_value)
case np.int32 :
value = int(raw_value)
case np.int64 :
value = int(raw_value)
case np.uint8 :
value = int(raw_value)
case np.uint16 :
value = int(raw_value)
case np.uint32 :
value = int(raw_value)
case np.uint64 :
value = int(raw_value)
case np.float_:
value = int(raw_value)
case np.float16:
value = float(raw_value)
case np.float32:
value = float(raw_value)
case np.float64:
value = float(raw_value)
case np.single:
value = float(raw_value)
case np.double:
value = float(raw_value)
case np.datetime64 :
ts = pd.to_datetime(str(raw_value))
value = ts.strftime('%Y.%m.%d')
case _:
value = raw_value
cell.put_value(value)
pass
def import_table_data_into_cells(cells,table_data,row_index,column_index,is_vertical):
table_row_index = row_index
table_column_index = column_index
row_count = len( table_data)
column_count = 0
for table_row in table_data:
for table_cell in table_row:
column_count =len( table_row)
put_cell_value(cells,table_cell,table_row_index,table_column_index)
if is_vertical :
table_row_index = table_row_index + 1
else:
table_column_index = table_column_index + 1
if is_vertical :
table_row_index = row_index
table_column_index = table_column_index + 1
else:
table_column_index = column_index
table_row_index = table_row_index + 1
if is_vertical :
end_row_index = row_index + row_count - 1
end_column_index = table_column_index - 1
else:
end_row_index = table_row_index - 1
end_column_index = column_index + column_count - 1
return (row_index,column_index,end_row_index,end_column_index)
excel_data = np.array([[['City', 'Region', 'Store'], ['Chicago', 'Central', 3055], ['New York', 'East', 3036], ['Detroit', 'Central', 3074]],
[['City2', 'Region2', 'Store3'], ['Seattle', 'West', 3000], ['philadelph', 'East', 3082], ['Detroit', 'Central', 3074]], [['City3', 'Region3', 'Store3'], ['Seattle', 'West', 3166], ['New York', 'East', 3090], ['Chicago', 'Central', 3055]]] )
# Create a new Aspose.Cells Workbook
workbook = Workbook()
begin_row_index = 0
begin_column_index = 0
is_vertical = False
sheet_index = 1
for table_data in excel_data:
curr_sheet = workbook.worksheets.add("Sheet_data_" + str(sheet_index))
curr_cells = curr_sheet.cells
import_table_data_into_cells(curr_cells , table_data , begin_row_index,begin_column_index,is_vertical)
sheet_index += 1
workbook.save("out.xlsx")

El resultado de la salida:

Cómo convertir la matriz NumPy a Hoja de Cálculo

Aquí tienes un ejemplo de código para demostrar cómo importar datos de una matriz NumPy a un archivo de Excel utilizando Aspose.Cells for Python via .NET:

  1. Cree un array de NumPy de muestra.
  2. Recorra el array de NumPy e importe los datos usando Aspose.Cells para Python via .NET.
import numpy as np
import pandas as pd
import aspose.cells
from aspose.cells import Workbook, Worksheet, Range, CellsHelper
def put_cell_value(cells, raw_value, row , column):
cell = cells.get(row , column)
dtype = type(raw_value)
match dtype:
case np.bool_ :
value = bool(raw_value)
case np.int_ :
value = int(raw_value)
case np.intc :
value = int(raw_value)
case np.intp :
value = int(raw_value)
case np.int8 :
value = int(raw_value)
case np.int16 :
value = int(raw_value)
case np.int32 :
value = int(raw_value)
case np.int64 :
value = int(raw_value)
case np.uint8 :
value = int(raw_value)
case np.uint16 :
value = int(raw_value)
case np.uint32 :
value = int(raw_value)
case np.uint64 :
value = int(raw_value)
case np.float_:
value = int(raw_value)
case np.float16:
value = float(raw_value)
case np.float32:
value = float(raw_value)
case np.float64:
value = float(raw_value)
case np.single:
value = float(raw_value)
case np.double:
value = float(raw_value)
case np.datetime64 :
ts = pd.to_datetime(str(raw_value))
value = ts.strftime('%Y.%m.%d')
case _:
value = raw_value
cell.put_value(value)
pass
def import_table_data_into_cells(cells,table_data,row_index,column_index,is_vertical):
table_row_index = row_index
table_column_index = column_index
row_count = len( table_data)
column_count = 0
for table_row in table_data:
for table_cell in table_row:
column_count =len( table_row)
put_cell_value(cells,table_cell,table_row_index,table_column_index)
if is_vertical :
table_row_index = table_row_index + 1
else:
table_column_index = table_column_index + 1
if is_vertical :
table_row_index = row_index
table_column_index = table_column_index + 1
else:
table_column_index = column_index
table_row_index = table_row_index + 1
if is_vertical :
end_row_index = row_index + row_count - 1
end_column_index = table_column_index - 1
else:
end_row_index = table_row_index - 1
end_column_index = column_index + column_count - 1
return (row_index,column_index,end_row_index,end_column_index)
# Create a sample NumPy array
data = np.array([['City', 'Region', 'Store'], ['Chicago', 'Central', 3055], ['New York', 'East', 3036], ['Detroit', 'Central', 3074]])
# Create a new Aspose.Cells Workbook
workbook = Workbook()
# Access the first (default) worksheet
worksheet = workbook.worksheets[0]
# Get the cells
cells = worksheet.cells
begin_row_index = 0
begin_column_index = 0
is_vertical = False
import_table_data_into_cells(cells , data , begin_row_index,begin_column_index,is_vertical)
workbook.save("out.xlsx")

El resultado de la salida:

Cómo convertir la matriz NumPy a ListObject

Aquí tienes un ejemplo de código para demostrar cómo importar datos de una matriz NumPy a un objeto ListObject utilizando Aspose.Cells for Python via .NET:

  1. Cree un array de NumPy de muestra.
  2. Recorra el array de NumPy e importe los datos usando Aspose.Cells para Python via .NET.
  3. Crear un objeto ListObject utilizando datos de muestra.
import numpy as np
import pandas as pd
import aspose.cells
from aspose.cells import Workbook, Worksheet, Range, CellsHelper
def put_cell_value(cells, raw_value, row , column):
cell = cells.get(row , column)
dtype = type(raw_value)
match dtype:
case np.bool_ :
value = bool(raw_value)
case np.int_ :
value = int(raw_value)
case np.intc :
value = int(raw_value)
case np.intp :
value = int(raw_value)
case np.int8 :
value = int(raw_value)
case np.int16 :
value = int(raw_value)
case np.int32 :
value = int(raw_value)
case np.int64 :
value = int(raw_value)
case np.uint8 :
value = int(raw_value)
case np.uint16 :
value = int(raw_value)
case np.uint32 :
value = int(raw_value)
case np.uint64 :
value = int(raw_value)
case np.float_:
value = int(raw_value)
case np.float16:
value = float(raw_value)
case np.float32:
value = float(raw_value)
case np.float64:
value = float(raw_value)
case np.single:
value = float(raw_value)
case np.double:
value = float(raw_value)
case np.datetime64 :
ts = pd.to_datetime(str(raw_value))
value = ts.strftime('%Y.%m.%d')
case _:
value = raw_value
cell.put_value(value)
pass
def import_table_data_into_cells(cells,table_data,row_index,column_index,is_vertical):
table_row_index = row_index
table_column_index = column_index
row_count = len( table_data)
column_count = 0
for table_row in table_data:
for table_cell in table_row:
column_count =len( table_row)
put_cell_value(cells,table_cell,table_row_index,table_column_index)
if is_vertical :
table_row_index = table_row_index + 1
else:
table_column_index = table_column_index + 1
if is_vertical :
table_row_index = row_index
table_column_index = table_column_index + 1
else:
table_column_index = column_index
table_row_index = table_row_index + 1
if is_vertical :
end_row_index = row_index + row_count - 1
end_column_index = table_column_index - 1
else:
end_row_index = table_row_index - 1
end_column_index = column_index + column_count - 1
return (row_index,column_index,end_row_index,end_column_index)
# Create a sample NumPy array
data = np.array([['City', 'Region', 'Store'], ['Chicago', 'Central', 3055], ['New York', 'East', 3036], ['Detroit', 'Central', 3074]])
# Create a new Aspose.Cells Workbook
workbook = Workbook()
# Access the first (default) worksheet
worksheet = workbook.worksheets[0]
# Get the cells
cells = worksheet.cells
begin_row_index = 0
begin_column_index = 0
is_vertical = False
# ndarray to listobject
(begin_row_index,begin_column_index,end_row_index,end_column_index) = import_table_data_into_cells(cells , data , begin_row_index,begin_column_index,is_vertical)
start_cell = CellsHelper.cell_index_to_name(begin_row_index, begin_column_index)
end_cell = CellsHelper.cell_index_to_name(end_row_index, end_column_index)
index = worksheet.list_objects.add(start_cell, end_cell,True)
workbook.save("out.xlsx")

El resultado de la salida:

Cómo convertir NumPy ndarray a rango

Aquí hay un ejemplo de fragmento de código para demostrar cómo importar datos de un array de NumPy a un rango usando Aspose.Cells para Python via .NET:

  1. Cree un array de NumPy de muestra.
  2. Recorra el array de NumPy e importe los datos usando Aspose.Cells para Python via .NET.
  3. Cree un objeto de rango usando datos de muestra.
import numpy as np
import pandas as pd
import aspose.cells
from aspose.cells import Workbook, Worksheet, Range, CellsHelper
def put_cell_value(cells, raw_value, row , column):
cell = cells.get(row , column)
dtype = type(raw_value)
match dtype:
case np.bool_ :
value = bool(raw_value)
case np.int_ :
value = int(raw_value)
case np.intc :
value = int(raw_value)
case np.intp :
value = int(raw_value)
case np.int8 :
value = int(raw_value)
case np.int16 :
value = int(raw_value)
case np.int32 :
value = int(raw_value)
case np.int64 :
value = int(raw_value)
case np.uint8 :
value = int(raw_value)
case np.uint16 :
value = int(raw_value)
case np.uint32 :
value = int(raw_value)
case np.uint64 :
value = int(raw_value)
case np.float_:
value = int(raw_value)
case np.float16:
value = float(raw_value)
case np.float32:
value = float(raw_value)
case np.float64:
value = float(raw_value)
case np.single:
value = float(raw_value)
case np.double:
value = float(raw_value)
case np.datetime64 :
ts = pd.to_datetime(str(raw_value))
value = ts.strftime('%Y.%m.%d')
case _:
value = raw_value
cell.put_value(value)
pass
def import_table_data_into_cells(cells,table_data,row_index,column_index,is_vertical):
table_row_index = row_index
table_column_index = column_index
row_count = len( table_data)
column_count = 0
for table_row in table_data:
for table_cell in table_row:
column_count =len( table_row)
put_cell_value(cells,table_cell,table_row_index,table_column_index)
if is_vertical :
table_row_index = table_row_index + 1
else:
table_column_index = table_column_index + 1
if is_vertical :
table_row_index = row_index
table_column_index = table_column_index + 1
else:
table_column_index = column_index
table_row_index = table_row_index + 1
if is_vertical :
end_row_index = row_index + row_count - 1
end_column_index = table_column_index - 1
else:
end_row_index = table_row_index - 1
end_column_index = column_index + column_count - 1
return (row_index,column_index,end_row_index,end_column_index)
# Create a sample NumPy array
data = np.array([['City', 'Region', 'Store'], ['Chicago', 'Central', 3055], ['New York', 'East', 3036], ['Detroit', 'Central', 3074]])
# Create a new Aspose.Cells Workbook
workbook = Workbook()
# Access the first (default) worksheet
worksheet = workbook.worksheets[0]
# Get the cells
cells = worksheet.cells
begin_row_index = 0
begin_column_index = 0
is_vertical = False
# ndarray to range
(begin_row_index,begin_column_index,end_row_index,end_column_index) = import_table_data_into_cells(cells , data , begin_row_index,begin_column_index,is_vertical)
start_cell = CellsHelper.cell_index_to_name(begin_row_index, begin_column_index)
end_cell = CellsHelper.cell_index_to_name(end_row_index, end_column_index)
range_obj = cells.create_range(start_cell, end_cell)
print("row count: " + str(range_obj.row_count))
print("column count: " + str(range_obj.column_count))
workbook.save("out.xlsx")

El resultado de la salida:

row count: 4
column count: 3

Cómo convertir NumPy ndarray a nombre

Aquí hay un ejemplo de fragmento de código para demostrar cómo importar datos de un array de NumPy a un nombre usando Aspose.Cells para Python via .NET:

  1. Cree un array de NumPy de muestra.
  2. Recorra el array de NumPy e importe los datos usando Aspose.Cells para Python via .NET.
  3. Cree un objeto de nombre usando datos de muestra.
import numpy as np
import pandas as pd
import aspose.cells
from aspose.cells import Workbook, Worksheet, Range, CellsHelper
def put_cell_value(cells, raw_value, row , column):
cell = cells.get(row , column)
dtype = type(raw_value)
match dtype:
case np.bool_ :
value = bool(raw_value)
case np.int_ :
value = int(raw_value)
case np.intc :
value = int(raw_value)
case np.intp :
value = int(raw_value)
case np.int8 :
value = int(raw_value)
case np.int16 :
value = int(raw_value)
case np.int32 :
value = int(raw_value)
case np.int64 :
value = int(raw_value)
case np.uint8 :
value = int(raw_value)
case np.uint16 :
value = int(raw_value)
case np.uint32 :
value = int(raw_value)
case np.uint64 :
value = int(raw_value)
case np.float_:
value = int(raw_value)
case np.float16:
value = float(raw_value)
case np.float32:
value = float(raw_value)
case np.float64:
value = float(raw_value)
case np.single:
value = float(raw_value)
case np.double:
value = float(raw_value)
case np.datetime64 :
ts = pd.to_datetime(str(raw_value))
value = ts.strftime('%Y.%m.%d')
case _:
value = raw_value
cell.put_value(value)
pass
def import_table_data_into_cells(cells,table_data,row_index,column_index,is_vertical):
table_row_index = row_index
table_column_index = column_index
row_count = len( table_data)
column_count = 0
for table_row in table_data:
for table_cell in table_row:
column_count =len( table_row)
put_cell_value(cells,table_cell,table_row_index,table_column_index)
if is_vertical :
table_row_index = table_row_index + 1
else:
table_column_index = table_column_index + 1
if is_vertical :
table_row_index = row_index
table_column_index = table_column_index + 1
else:
table_column_index = column_index
table_row_index = table_row_index + 1
if is_vertical :
end_row_index = row_index + row_count - 1
end_column_index = table_column_index - 1
else:
end_row_index = table_row_index - 1
end_column_index = column_index + column_count - 1
return (row_index,column_index,end_row_index,end_column_index)
# Create a sample NumPy array
data = np.array([['City', 'Region', 'Store'], ['Chicago', 'Central', 3055], ['New York', 'East', 3036], ['Detroit', 'Central', 3074]])
# Create a new Aspose.Cells Workbook
workbook = Workbook()
# Access the first (default) worksheet
worksheet = workbook.worksheets[0]
# Get the cells
cells = worksheet.cells
begin_row_index = 0
begin_column_index = 0
is_vertical = False
# ndarray to Name
(begin_row_index,begin_column_index,end_row_index,end_column_index) = import_table_data_into_cells(cells , data , begin_row_index,begin_column_index,is_vertical)
start_cell = CellsHelper.cell_index_to_name(begin_row_index, begin_column_index)
end_cell = CellsHelper.cell_index_to_name(end_row_index, end_column_index)
name_text = "Name_test"
name_refers_to = "=" + worksheet.name + "!$" + start_cell + ":$" + end_cell
name_index = worksheet.workbook.worksheets.names.add(name_text);
name = worksheet.workbook.worksheets.names[name_index]
name.refers_to = name_refers_to
workbook.save("out.xlsx")

El resultado de la salida: