2010-08-05 23 views
6

Sé cómo usar numpy.savetxt para escribir una matriz en un archivo. ¿Cómo puedo escribir múltiples matrices en el mismo archivo?Escribir múltiples matrices numpy en el archivo

Básicamente quiero hacer cálculos matemáticos en una columna de números, y luego reemplazar la columna anterior con los números modificados. Leí que la manera más fácil de hacer esto es escribir un nuevo archivo por completo, poner los números modificados y simplemente 'copiar y pegar' los otros números en el archivo.

Cualquier ayuda es apreciada.

Gracias!

Respuesta

4

Si desea escribir varias matrices en un archivo para su uso posterior, busque en numpy.savez.

Sin embargo, según su descripción, parece que quiere hacer algo con una columna particular de un archivo de texto delimitado.

En ese caso, simplemente cargue todo y opere solo en la columna que necesita.

E.g.

import numpy as np 

data = np.loadtxt('test.txt') 

# Multiply the 4th column by 5 
data[:,3] *= 5 

# Do something more complicated to the 2nd column 
data[:,1] = np.cos(data[:,1]) 

# Save the array back to the file 
np.savetxt('test.txt', data) 
3

Respondiendo a una publicación muy antigua para mi propio uso. He utilizado lo siguiente para escribir dos matrices 1D del mismo tamaño que CSV.

import numpy as np 

x = [1, 2, 3] 
y = [4, 5, 6] 
zipped = zip(x, y) 
# >>> [(1, 4), (2, 5), (3, 6)] 

# Save the array back to the file 
np.savetxt('z.csv', zipped, fmt='%i,%i') 
+0

Esto parece bonito, pero no funciona en Python 3. Aquí, un 'IndexError' es lanzada por NumPy. –

1
import numpy 


list1 = [1, 2, 3, 4] 

list2 = [0.45, 0.98, 0.89, 0.21] 

dat = numpy.array([list1, list2]) 

dat = dat.T 

numpy.savetxt('data.txt', dat, delimiter = ',') 
+5

Bienvenido a StackOverflow y gracias por intentar ayudar. Por favor explique su respuesta de solo código. – Yunnosch