una tutorial transpuesta tab multiplicar multiplicacion matriz matrices libreria example español python import numpy genfromtxt

python - transpuesta - numpy tutorial español pdf



numpy.genfromtxt produce un conjunto de tuplas que parecen matrices 2D, ¿por qué? (1)

Estoy ejecutando genfromtxt como a continuación:

date_conv = lambda x: str(x).replace(":", "/") time_conv = lambda x: str(x) a = np.genfromtxt(input.txt, delimiter='','', skip_header=4, usecols=[0, 1] + radii_indices, converters={0: date_conv, 1: time_conv})

Donde input.txt es de esta esencia .

Cuando miro los resultados, es una matriz 1D y no una matriz 2D:

>>> np.shape(a) (918,)

Parece ser una matriz de tuplas en su lugar:

>>> a[0] (''06/03/2006'', ''08:27:23'', 6.4e-05, 0.000336, 0.001168, 0.002716, 0.004274, 0.004658, 0.003756, 0.002697, 0.002257, 0.002566, 0.003522, 0.004471, 0.00492, 0.005602, 0.006956, 0.008442, 0.008784, 0.006976, 0.003917, 0.001494, 0.000379, 6.4e-05)

Si genfromtxt la especificación de conversores de la llamada genfromtxt , funciona bien y produce una matriz 2D:

>>> np.shape(a) (918, 24)


Lo que se devuelve se llama ndarray estructurado , ver, por ejemplo, aquí: http://docs.scipy.org/doc/numpy/user/basics.rec.html . Esto se debe a que sus datos no son homogéneos, es decir, no todos los elementos tienen el mismo tipo: los datos contienen ambas cadenas (las dos primeras columnas) y flotantes. Las matrices numeradas deben ser homogéneas (ver here una explicación).

Las matrices estructuradas "resuelven" esta restricción de homogeneidad mediante el uso de tuplas para cada registro o fila, esa es la razón por la que la matriz devuelta es 1D: una serie de tuplas, pero cada tupla (fila) consta de varios datos, por lo que puede considerarlo filas y columnas. Las diferentes columnas son accesibles como a[''nameofcolumn''] , en su caso, por ejemplo, a[''Julian_Day''] .

La razón por la que devuelve una matriz 2D al eliminar los convertidores de las dos primeras columnas es que, en ese caso, genfromtxt considera todos los datos del mismo tipo, y se devuelve una ndarray normal (el tipo predeterminado es flotante, pero puede especificarlo con el argumento dtype ).

EDITAR : si desea utilizar los nombres de las columnas, puede usar el argumento de names (y establecer skip_header en solo tres):

a2 = np.genfromtxt("input.txt", delimiter='','', skip_header=3, names = True, dtype = None, usecols=[0, 1] + radii_indices, converters={0: date_conv, 1: time_conv})

lo que puedes hacer, por ejemplo:

>>> a2[''Dateddmmyyyy''] array([''06/03/2006'', ''06/03/2006'', ''18/03/2006'', ''19/03/2006'', ''19/03/2006'', ''19/03/2006'', ''19/03/2006'', ''19/03/2006'', ''19/03/2006'', ''19/03/2006''], dtype=''|S10'')