Si, de hecho, desea utilizar NumPy, es probable que no desee las cadenas en su matriz, de lo contrario también tendrá que representar sus flotadores como cadenas.
Lo que se busca es la sintaxis NumPy acceder a los elementos de una matriz 2D por fila (y excluir a la primera columna).
que la sintaxis es:
M[row_index,1:] # selects all but 1st col from row given by 'row_index'
W/r/t el segundo escenario en su pregunta-- selección de columnas no adyacentes:
M[row_index,[0,2]] # selects 1st & 3rd cols from row given by 'row_index'
La pequeña complicación en su pregunta es solo que desea usar una cadena para row_index, por lo que es necesario eliminar las cadenas (para que pueda crear una matriz 2D NumPy de flotantes), reemplácelas por numéricas índices de fila y luego crear una tabla de consulta para mapear las de las cuerdas con los índices de fila numéricos:
>>> import numpy as NP
>>> # create a look-up table so you can remove the strings from your python nested list,
>>> # which will allow you to represent your data as a 2D NumPy array with dtype=float
>>> keys
['foo', 'bar', 'noo', 'tar', 'boo']
>>> values # 1D index array comprised of one float value for each unique string in 'keys'
array([0., 1., 2., 3., 4.])
>>> LuT = dict(zip(keys, values))
>>> # add an index to data by inserting 'values' array as first column of the data matrix
>>> A = NP.hstack((vals, A))
>>> A
NP.array([ [ 0., .567, .611],
[ 1., .469, .479],
[ 2., .22, .269],
[ 3., .48, .508],
[ 4., .324, .324] ])
>>> # so now to look up an item, by 'key':
>>> # write a small function to perform the look-ups:
>>> def select_row(key):
return A[LuT[key],1:]
>>> select_row('foo')
array([ 0.567, 0.611])
>>> select_row('noo')
array([ 0.22 , 0.269])
El segundo escenario en su pregunta: ¿y si los cambios de columna de índice?
>>> # e.g., move index to column 1 (as in your Q)
>>> A = NP.roll(A, 1, axis=1)
>>> A
array([[ 0.611, 1. , 0.567],
[ 0.479, 2. , 0.469],
[ 0.269, 3. , 0.22 ],
[ 0.508, 4. , 0.48 ],
[ 0.324, 5. , 0.324]])
>>> # the original function is changed slightly, to select non-adjacent columns:
>>> def select_row2(key):
return A[LuT[key],[0,2]]
>>> select_row2('foo')
array([ 0.611, 0.567])
¿Qué son "foo", "bar", etc.? ¿Instrumentos de cuerda? ¿O solo marcadores de posición para otros números? –
¿Cómo podría haber construido una matriz numpy que contenga * both * floats y strings? – talonmies
@tal de la base de datos. – Merlin