una transpuesta multiplicar multiplicacion matriz matrices libreria leer ejemplos columnas python arrays csv numpy

multiplicar - transpuesta de una matriz en python numpy



Volcar una matriz NumPy en un archivo csv (9)

Como ya se mencionó, la mejor manera de volcar la matriz en un archivo CSV es mediante el uso del método .savetxt(...) . Sin embargo, hay ciertas cosas que debemos saber para hacerlo correctamente.

Por ejemplo, si tiene una matriz dtype = np.int32 con dtype = np.int32 como

narr = np.array([[1,2], [3,4], [5,6]], dtype=np.int32)

y quiere guardar usando savetxt como

np.savetxt(''values.csv'', narr, delimiter=",")

Almacenará los datos en formato exponencial de punto flotante como

1.000000000000000000e+00,2.000000000000000000e+00 3.000000000000000000e+00,4.000000000000000000e+00 5.000000000000000000e+00,6.000000000000000000e+00

Deberá cambiar el formato utilizando un parámetro llamado fmt como

np.savetxt(''values.csv'', narr, fmt="%d", delimiter=",")

para almacenar datos en su formato original

Guardar datos en formato comprimido gz

Además, savetxt se puede usar para almacenar datos en formato comprimido .gz , lo que puede ser útil al transferir datos a través de la red.

Solo necesitamos cambiar la extensión del archivo ya que .gz y numpy se encargarán de todo automáticamente

np.savetxt(''values.gz'', narr, fmt="%d", delimiter=",")

Espero eso ayude

¿Hay una manera de volcar una matriz NumPy en un archivo CSV? Tengo una matriz NumPy 2D y necesito volcarla en un formato legible.


En Python usamos el módulo csv.writer () para escribir datos en archivos csv. Este módulo es similar al módulo csv.reader ().

import csv person = [[''SN'', ''Person'', ''DOB''], [''1'', ''John'', ''18/1/1997''], [''2'', ''Marie'',''19/2/1998''], [''3'', ''Simon'',''20/3/1999''], [''4'', ''Erik'', ''21/4/2000''], [''5'', ''Ana'', ''22/5/2001'']] csv.register_dialect(''myDialect'', delimiter = ''|'', quoting=csv.QUOTE_NONE, skipinitialspace=True) with open(''dob.csv'', ''w'') as f: writer = csv.writer(f, dialect=''myDialect'') for row in person: writer.writerow(row) f.close()

Un delimitador es una cadena utilizada para separar campos. El valor predeterminado es coma (,).


Es fácil y rápido con pandas.

import pandas as pd df = pd.DataFrame(np_array) df.to_csv("file_path.csv")


Escribir arrays de registros como archivos CSV con encabezados requiere un poco más de trabajo.

Este ejemplo lee un archivo CSV con el encabezado en la primera línea, luego escribe el mismo archivo.

import numpy as np # Write an example CSV file with headers on first line with open(''example.csv'', ''w'') as fp: fp.write(''''''/ col1,col2,col3 1,100.1,string1 2,222.2,second string '''''') # Read it as a Numpy record array ar = np.recfromcsv(''example.csv'') print(repr(ar)) # rec.array([(1, 100.1, ''string1''), (2, 222.2, ''second string'')], # dtype=[(''col1'', ''<i4''), (''col2'', ''<f8''), (''col3'', ''S13'')]) # Write as a CSV file with headers on first line with open(''out.csv'', ''w'') as fp: fp.write('',''.join(ar.dtype.names) + ''/n'') np.savetxt(fp, ar, ''%s'', '','')

Tenga en cuenta que este ejemplo no considera cadenas con comas. Para considerar citas para datos no numéricos, use el paquete csv :

import csv with open(''out2.csv'', ''wb'') as fp: writer = csv.writer(fp, quoting=csv.QUOTE_NONNUMERIC) writer.writerow(ar.dtype.names) writer.writerows(ar.tolist())


Si desea guardar su matriz numpy (por ejemplo, your_array = np.array([[1,2],[3,4]]) ) en una celda, puede convertirla primero con your_array.tolist() .

Luego guárdelo de la manera normal en una celda, con delimiter='';'' y la celda en el archivo csv se verá así [[1, 2], [2, 4]]

Entonces podrías restaurar tu matriz de esta manera: your_array = np.array(ast.literal_eval(cell_string))


También puedes hacerlo con python puro sin utilizar ningún módulo.

# format as a block of csv text to do whatever you want csv_rows = ["{},{}".format(i, j) for i, j in array] csv_text = "/n".join(csv_rows) # write it to a file with open(''file.csv'', ''w'') as f: f.write(csv_text)


tofile es una función conveniente para hacer esto:

import numpy as np a = np.asarray([ [1,2,3], [4,5,6], [7,8,9] ]) a.tofile(''foo.csv'',sep='','',format=''%10.5f'')

La página del manual tiene algunas notas útiles:

Esta es una función de conveniencia para el almacenamiento rápido de datos de matriz. La información sobre el endianness y la precisión se pierde, por lo que este método no es una buena opción para los archivos destinados a archivar datos o transportar datos entre máquinas con endianness diferente. Algunos de estos problemas se pueden superar generando los datos como archivos de texto, a expensas de la velocidad y el tamaño del archivo.

Nota. Esta función no produce archivos csv de varias líneas, guarda todo en una línea.


numpy.savetxt guarda una matriz en un archivo de texto.

import numpy a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ]) numpy.savetxt("foo.csv", a, delimiter=",")


Si quieres escribir en columna:

for x in np.nditer(a.T, order=''C''): file.write(str(x)) file.write("/n")

Aquí ''a'' es el nombre de la matriz numpy y ''archivo'' es la variable para escribir en un archivo.

Si quieres escribir en fila:

writer= csv.writer(file, delimiter='','') for x in np.nditer(a.T, order=''C''): row.append(str(x)) writer.writerow(row)