Ваша первая версия indices
действительно представляет собой двумерный массив целых чисел - indices.shape
возвращает (5, 2)
, а print(indices)
дает:
array([[0, 2],
[1, 3],
[0, 3],
[1, 2],
[3, 4]])
Вторая, однако, является 1D массив объектов списка :
array([list([0, 2, 3]), list([1, 3]), list([0, 3]), list([1, 2]),
list([3, 4])], dtype=object)
Здесь просто нечего векторизовать, потому что эти списки не являются numpy векторами . Я считаю, что лучшее, что вы можете сделать для векторизации своих операций, - это создать indices
в виде списка массивов, а не массива списков:
indices = [np.array(x) for x in [[0, 2, 3], [1, 3], [0, 3], [1, 2], [3, 4]]]
, а затем переопределить функцию для обработки этого:
def example(testing, index):
return [ np.sum(testing[i]) for i in index ]
print(example(test, indices))
# prints [5, 4, 3, 3, 7]