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 arraya [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 arrayNesta 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 arraya [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.
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