br
es el nombre de una lista de cadenas que dice así:la conversión de una lista de cadenas en una matriz numpy de una manera más rápida
['14 0.000000 -- (long term 0.000000)\n',
'19 0.000000 -- (long term 0.000000)\n',
'22 0.000000 -- (long term 0.000000)\n',
...
Estoy interesado en las dos primeras columnas, los cuales me gustaría para convertir a una matriz numpy. Hasta el momento, se me ha ocurrido con la siguiente solución:
x = N.array ([0., 0.])
for i in br:
x = N.vstack ((x, N.array (map (float, i.split()[:2]))))
Esto se traduce en tener una matriz 2-D:
array([[ 0., 0.],
[ 14., 0.],
[ 19., 0.],
[ 22., 0.],
...
Sin embargo, desde br
es bastante grande (~ 10^5 entradas), este procedimiento lleva algún tiempo. Me preguntaba, ¿hay alguna manera de lograr el mismo resultado, pero en menos tiempo?
aa = numpy.array ([x.split ('', 2) [0: 2] para x en br], dtype = 'float') – steabert
Es bueno saber sobre 'enumerate': no me di cuenta ! También gracias @ steabert a su contribución. Las velocidades de ambas soluciones me parecen bastante similares. – Jir