import numpy as np
x = np.random.random((3,3)) #point-set 1
y = np.random.random((3,3)) #point-set 2
neighbors_of_x = np.array([[0,1],[0],[0]])
#^^ contains indices of neighbors of points in x, in y.
#each point can have different number of neighbors in y.
#Below, for every point in x, subtract from its neighbor in y
for i in range(x.shape[0]):
print(x[i,:] - y[neighbors_of_x[i],:])
Выше приведен типичный пример;Фактические наборы баллов могут иметь 1000 баллов.Следовательно, я хочу «векторизовать» последние 2 строки (для цикла)
Есть ли способ сделать это без цикла for в конце, с каждым индексом i
, обрабатываемым параллельно?
Примечание: поскольку neighbors_of_x
может иметь различное количество индексов на каждом i
, этот массив имеет тип dtype object
, и, следовательно, я не могу напрямую использовать его для выбора элементов y