¿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])
Ver también: “numpy.arange” y “reformar” para asignar memoria
Ejemplo: (Asignación de una matriz con forma de matriz (3×4))
nrows = 3
ncols = 4
my_array = numpy.arange(nrows*ncols, dtype="double")
my_array = my_array.reshape(nrows, ncols)
-
Me tomó 2 horas descubrir [:,2] Supongo que esta característica no está en la literatura oficial sobre el corte.
– Niken
19 de marzo de 2017 a las 17:48
-
¿Qué significa la coma?
– Phil
24 de noviembre de 2017 a las 18:13
-
@Phil
[row, col]
. la coma separa.– Ashe Ketchum
11 de diciembre de 2017 a las 20:06
-
¿Cómo puede esta respuesta tener tantos votos a favor? OP nunca dijo que es una matriz numpy
– sziraqui
29 de abril de 2018 a las 11:58
-
para extraer 2 columnas: A[:,[1,3]]por ejemplo extraer la segunda y cuarta columna
– sadalsuud
23 de enero de 2019 a las 5:41
Martín Geisler
¿Podría ser que estés usando un matriz numérica? Pitón tiene la formación módulo, pero eso no es compatible con matrices multidimensionales. Las listas normales de Python también son unidimensionales.
Sin embargo, si tiene una lista bidimensional simple como esta:
A = [[1,2,3,4],
[5,6,7,8]]
entonces puedes extraer una columna como esta:
def column(matrix, i):
return [row[i] for row in matrix]
Extrayendo la segunda columna (índice 1):
>>> column(A, 1)
[2, 6]
O alternativamente, simplemente:
>>> [row[1] for row in A]
[2, 6]
-
Esta debería ser la mejor respuesta. Responde a la pregunta formulada mientras señala una alternativa en NumPy.
– Marco
6 de diciembre de 2020 a las 12:33
-
[row[1] for row in A]
esto es elegante Vota por eso.– Simón Z.
4 de marzo de 2021 a las 2:22
Si tienes una matriz como
a = [[1, 2], [2, 3], [3, 4]]
Luego extraes la primera columna así:
[row[0] for row in a]
Así que el resultado se ve así:
[1, 2, 3]
¡Échale un vistazo!
a = [[1, 2], [2, 3], [3, 4]]
a2 = zip(*a)
a2[0]
es lo mismo que el anterior, 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
>>> x = arange(20).reshape(4,5)
>>> x array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
si quieres la segunda columna puedes usar
>>> x[:, 1]
array([ 1, 6, 11, 16])
-
¿Esto está usando numpy?
– para siempre
2 de abril de 2019 a las 17:24
-
No puedo encontrar ninguna documentación para
arange()
en Python3 fuera de numpy. ¿Cualquiera?–Kevin W. Matthews
17 de agosto de 2019 a las 21:45
-
creo que es tensorflow, @KevinWMatthews
– nerkn
15 de noviembre de 2020 a las 9:54
Si tiene una matriz bidimensional en Python (no numpy), puede extraer todas las columnas así,
data = [
['a', 1, 2],
['b', 3, 4],
['c', 5, 6]
]
columns = list(zip(*data))
print("column[0] = {}".format(columns[0]))
print("column[1] = {}".format(columns[1]))
print("column[2] = {}".format(columns[2]))
Ejecutar este código producirá,
>>> print("column[0] = {}".format(columns[0]))
column[0] = ('a', 'b', 'c')
>>> print("column[1] = {}".format(columns[1]))
column[1] = (1, 3, 5)
>>> print("column[2] = {}".format(columns[2]))
column[2] = (2, 4, 6)
-
¿Esto está usando numpy?
– para siempre
2 de abril de 2019 a las 17:24
-
No puedo encontrar ninguna documentación para
arange()
en Python3 fuera de numpy. ¿Cualquiera?–Kevin W. Matthews
17 de agosto de 2019 a las 21:45
-
creo que es tensorflow, @KevinWMatthews
– nerkn
15 de noviembre de 2020 a las 9:54
Pedro Pablo
def get_col(arr, col):
return map(lambda x : x[col], arr)
a = [[1,2,3,4], [5,6,7,8], [9,10,11,12],[13,14,15,16]]
print get_col(a, 3)
La función de mapa en Python es otra forma de hacerlo.