"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como extrair elementos de uma matriz 2D Numpy usando índices de outra matriz?

Como extrair elementos de uma matriz 2D Numpy usando índices de outra matriz?

Postado em 2025-03-25
Navegar:314

How to Extract Elements from a 2D NumPy Array Using Indices from Another Array?

extraindo elementos de uma matriz 2D usando índices de outra matriz

em Numpy, às vezes torna -se necessário extrair elementos específicos de uma matriz multidimensional baseada em outro Array. Esse cenário geralmente surge ao trabalhar com estruturas de dados como matrizes esparsas ou seleções indexadas. B = np.array ([[1], [0], [1]]) # Index Array

O objetivo é extrair um elemento de cada linha de A, onde o elemento específico é especificado pelo índice na linha correspondente de B. A saída esperada deve ser: [5]])

soluções:

A = np.array([[0, 1], [2, 3], [4, 5]])
B = np.array([[1], [0], [1]])  # Index array

1. Indexação de matriz puramente inteira:

A = np.array([[0, 1], [2, 3], [4, 5]])
B = np.array([[1], [0], [1]])  # Index array
a [np.arange (a.shape [0]), b.ravel ()]

Este método envolve o uso dos recursos de indexação da matriz inteira de Numpy. Ele gera uma gama de índices correspondentes às linhas de A e combina -o com a matriz b achatada para selecionar os elementos apropriados.

2. Transpondo e np.Choose:

np.choose (b.ravel (), a.t)
A = np.array([[0, 1], [2, 3], [4, 5]])
B = np.array([[1], [0], [1]])  # Index array
Nesta abordagem alternativa, você transpor a uma forma de B e depois use np.choose para selecionar os elementos desejados com base no Bray. [ Iterable Unplacking (python> = 3.6):

*a = a.t C = np.array ([*zip (*a)] [i] para i em B.Ravel ()) Este método usa a descompactação iterável para converter uma lista de linhas e depois itera as linhas de A com base nos índices em B para extrair os elementos desejados. Lista compreensões e transmissão:

A = np.array([[0, 1], [2, 3], [4, 5]])
B = np.array([[1], [0], [1]])  # Index array
[a [i] [j] para i, j em zip (range (a.shape [0]), b.ravel ())]

list As compreensões podem ser usadas para criar uma nova matriz, itando sobre os elementos de And And B e B e BEUM, que se reexam e a listar os elementos e a listar e se realizarem a listagem e a listar os elementos e os elementos de And B e B e Bring de And Br Ofrenting e B e BELE. seleção.

5. Fancy Indexing (Numpy> = 1.18):

A = np.array([[0, 1], [2, 3], [4, 5]])
B = np.array([[1], [0], [1]])  # Index array
a [np.stack ([range (a.shape [0]), B.Ravel ()], Axis = 1)]

indexação sofisticada permite mais eficiente e compacto operações de indexação. Nesse caso, cria uma matriz 2D com os índices de linha e os índices B, que podem ser usados ​​para selecionar os elementos desejados de a.

A solução mais apropriada depende dos requisitos e restrições específicos da tarefa, como eficiência, legibilidade e compatibilidade com as versões mais antigas de Numpy.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3