Alguém sabe como extrair uma coluna de uma matriz multidimensional em Python?
240
Alguém sabe como extrair uma coluna de uma matriz multidimensional em 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])
Consulte também: "numpy.arange" e "remodelar" para alocar memória
Exemplo: (Alocando uma matriz com modelagem de matriz (3x4))
nrows = 3
ncols = 4
my_array = numpy.arange(nrows*ncols, dtype='double')
my_array = my_array.reshape(nrows, ncols)
[row, col]
. a vírgula se separa.Será que você está usando uma matriz NumPy ? O Python possui o módulo array , mas isso não suporta matrizes multidimensionais. As listas normais de Python também são unidimensionais.
No entanto, se você tiver uma lista bidimensional simples como esta:
então você pode extrair uma coluna como esta:
Extraindo a segunda coluna (índice 1):
Ou, alternativamente, simplesmente:
fonte
Se você tiver uma matriz como
Então você extrai a primeira coluna assim:
Portanto, o resultado fica assim:
fonte
Confira!
é a mesma coisa que acima, exceto, de alguma forma, que o zip faz o trabalho, mas exige matrizes únicas como argumentos, a sintaxe * a descompacta a matriz multidimensional em argumentos de matriz única
fonte
a2 = zip(*a); a2 = list(a2); a2[0]
A função map no Python é outro caminho a percorrer.
fonte
se você quiser a segunda coluna, você pode usar
fonte
arange()
no Python3 fora do numpy. Qualquer um?fonte
O operador itemgetter também pode ajudar, se você gosta de python com estilo de redução de mapa, em vez de compreensão de lista, por um pouco de variedade!
fonte
Você também pode usar isso:
Nota: Isso não está funcionando para a matriz incorporada e não está alinhado (por exemplo, np.array ([[1,2,3], [4,5,6,7]]))
fonte
Eu acho que você deseja extrair uma coluna de uma matriz como uma matriz abaixo
Agora, se você deseja obter a terceira coluna no formato
Então você precisa primeiro fazer da matriz uma matriz
E agora você pode fazer cálculos com elementos, como faria no Excel.
fonte
digamos que temos
n X m
matriz (n
linhas em
colunas) digamos 5 linhas e 4 colunasPara extrair as colunas em python, podemos usar a compreensão de lista como esta
Você pode substituir 4 pelo número de colunas que sua matriz tiver. O resultado é
[ [1,5,9,13,17],[2,10,14,18],[3,7,11,15,19],[4,8,12,16,20] ]
fonte
fonte
Mais uma maneira de usar matrizes
fonte
Se você tiver uma matriz bidimensional em Python (não numpy), poderá extrair todas as colunas dessa forma,
A execução desse código produzirá,
Obviamente, você pode extrair uma única coluna por índice (por exemplo
columns[0]
)fonte
Apesar de usar
zip(*iterable)
para transpor uma lista aninhada, você também pode usar o seguinte se as listas aninhadas variarem de comprimento:resulta em:
A primeira coluna é assim:
fonte
Bem, um pouco tarde ...
Caso o desempenho seja importante e seus dados tenham formato retangular, você também poderá armazená-los em uma dimensão e acessar as colunas fatiando regularmente, por exemplo ...
O interessante é que isso é realmente rápido. No entanto , índices negativos não funcionam aqui! Portanto, você não pode acessar a última coluna ou linha pelo índice -1.
Se você precisar de indexação negativa, poderá ajustar um pouco as funções do acessador, por exemplo
fonte
Se você quiser pegar mais do que apenas uma coluna, use fatia:
fonte
Prefiro a próxima dica: ter a matriz nomeada
matrix_a
e usarcolumn_number
, por exemplo:fonte
Basta usar transpose (), para que as colunas sejam tão fáceis quanto as linhas
fonte
Todas as colunas de uma matriz em uma nova lista:
fonte