Numpy: asignación de valores a una matriz 2D con una lista de índices
Tengo 2d numpy array (piense en una imagen en escala de grises). Quiero asignar cierto valor a una lista de coordenadas para esta matriz, de modo que:
img = np.zeros((5, 5))
coords = np.array([[0, 1], [1, 2], [2, 3], [3, 4]])
def bad_use_of_numpy(img, coords):
for i, coord in enumerate(coords):
img[coord[0], coord[1]] = 255
return img
bad_use_of_numpy(img, coords)
Esto funciona, pero siento que puedo aprovechar la funcionalidad de numpy para hacerlo más rápido. También podría tener un caso de uso más adelante para algo como lo siguiente:
img = np.zeros((5, 5))
coords = np.array([[0, 1], [1, 2], [2, 3], [3, 4]])
vals = np.array([1, 2, 3, 4])
def bad_use_of_numpy(img, coords, vals):
for coord in coords:
img[coord[0], coord[1]] = vals[i]
return img
bad_use_of_numpy(img, coords, vals)
¿Hay una forma más vectorizada de hacer eso?