¿Alguien sabe cómo extraer una columna de una matriz multidimensional en Python?
240
¿Alguien sabe cómo extraer una columna de una matriz multidimensional en Python?
>>> import numpy as np
>>> A = np.array([[1,2,3,4],[5,6,7,8]])
>>> A
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
>>> A[:,2] # returns the third columm
array([3, 7])
Vea también: "numpy.arange" y "rehape" para asignar memoria
Ejemplo: (Asignación de una matriz con forma de matriz (3x4))
nrows = 3
ncols = 4
my_array = numpy.arange(nrows*ncols, dtype='double')
my_array = my_array.reshape(nrows, ncols)
[row, col]
. La coma se separa.¿Podría ser que estás usando una matriz NumPy ? Python tiene el módulo de matriz , pero eso no admite matrices multidimensionales. Las listas normales de Python también son unidimensionales.
Sin embargo, si tiene una lista bidimensional simple como esta:
entonces puedes extraer una columna como esta:
Extrayendo la segunda columna (índice 1):
O alternativamente, simplemente:
fuente
Si tienes una matriz como
Luego extrae la primera columna así:
Entonces el resultado se ve así:
fuente
¡Echale un vistazo!
es lo mismo que antes, excepto que de alguna manera es más ordenado, el zip hace el trabajo pero requiere matrices individuales como argumentos, la sintaxis * a desempaqueta la matriz multidimensional en argumentos de matriz única
fuente
a2 = zip(*a); a2 = list(a2); a2[0]
La función de mapa en Python es otra forma de hacerlo.
fuente
si quieres la segunda columna puedes usar
fuente
arange()
en Python3 fuera de numpy. ¿Nadie?fuente
¡El operador itemgetter también puede ayudar, si le gusta el estilo de reducción de mapas python, en lugar de las comprensiones de listas, para una pequeña variedad!
fuente
También puedes usar esto:
Nota: Esto no funciona para la matriz integrada y no está alineado (por ejemplo, np.array ([[1,2,3], [4,5,6,7]]))
fuente
Creo que desea extraer una columna de una matriz, como una matriz a continuación
Ahora si quieres obtener la tercera columna en el formato
Luego, primero debe hacer que la matriz sea una matriz
Y ahora puede hacer cálculos sabios de elementos como lo haría en Excel.
fuente
digamos que tenemos
n X m
matriz (n
filas ym
columnas) digamos 5 filas y 4 columnasPara extraer las columnas en Python, podemos usar la comprensión de listas como esta
Puede reemplazar 4 por el número de columnas que tenga su matriz. El resultado es
[ [1,5,9,13,17],[2,10,14,18],[3,7,11,15,19],[4,8,12,16,20] ]
fuente
fuente
Una forma más de usar matrices
fuente
Si tiene una matriz bidimensional en Python (no numpy), puede extraer todas las columnas de esta manera,
Ejecutar este código producirá,
Por supuesto, puede extraer una sola columna por índice (por ejemplo
columns[0]
)fuente
A pesar de usar
zip(*iterable)
para transponer una lista anidada, también puede usar lo siguiente si las listas anidadas varían en longitud:resultados en:
La primera columna es así:
fuente
Bueno, un poco tarde ...
En caso de que el rendimiento sea importante y sus datos tengan una forma rectangular, también puede almacenarlos en una dimensión y acceder a las columnas mediante cortes regulares, por ejemplo ...
Lo bueno es que esto es realmente rápido. ¡Sin embargo , los índices negativos no funcionan aquí! Por lo tanto, no puede acceder a la última columna o fila por el índice -1.
Si necesita indexación negativa, puede ajustar un poco las funciones de acceso, p. Ej.
fuente
Si desea capturar más de una columna, simplemente use slice:
fuente
Prefiero la siguiente pista: tener la matriz nombrada
matrix_a
y usarcolumn_number
, por ejemplo:fuente
Simplemente use transpose (), luego puede obtener las columnas tan fácil como obtener filas
fuente
Todas las columnas de una matriz en una nueva lista:
fuente