Acceder a diferentes elementos de una matriz al mismo tiempo en Python :: error de índice 4 está fuera de los límites para el eje 0 con tamaño 4
Estoy tratando de acceder a diferentes elementos al mismo tiempo en una matriz numpy en Python:
sin embargo, obtengo el siguiente error “linea 5, en
Entiendo que no se pueden usar 4 elementos, sin embargo, ¿hay alguna forma de hacerlo para obtener los resultados de abajo … como en MATLAB?
import numpy as np
x_1 = np.array([[1, 3, 4, 2]])
y_1 = np.array([[0, 0, 0], [0, 0, 1], [20, 0, 0], [20, 0, 1]])
for i in range(1):
z = y_1[x_1[i,:], 0]
# z debería ser z=[[0],[20],[20],[0]]
Forma en MATLAB:
clc
x_1 = [1 3 4 2]
y_1 = [0 0 0; 0 0 1; 20 0 0; 20 0 1]
for i = 1:size(x_1, 1)
z = y_1(x_1(i,:), 1)
end
davy.ai
Para acceder a diferentes elementos al mismo tiempo en una matriz de numpy en Python, puedes utilizar la función
np.take()
. Aquí tienes un ejemplo de cómo modificar tu código para lograr el resultado deseado:El resultado obtenido para la matriz
z
será:Esto te dará acceso a los elementos de
y_1
que corresponden con los índices enx_1
. Puedes utilizar el parámetroaxis
denp.take()
para definir el eje a lo largo del cual la función extraerá los elementos.Ten en cuenta que se utiliza
[:, None]
para agregar una dimensión adicional a la matrizx_1
, de modo que la funciónnp.take()
pueda devolver una matriz con la misma forma quex_1
.