Мне интересно, что является самым быстрым способом, учитывая массив NumPy в форме (n, m) и массив Numpy в форме (p), описывающий раздел в диапазоне от 0 до n (например, один такой раздел для n = 6будет: [0, 2, 4], что означает, что индексы разделены как (0, 1), (2,3), (4,5)), чтобы возвратить массив массивов формы (p, m)строки, соответствующие каждому разделу, суммируются вместе.
Например,
[[0,1,1,1],
[2,0,1,1],
[0,0,0,1],
[5,1,0,0]]
при условии, что раздел [0,1]
должен вернуть
[[0,1,1,1],
[7,1,1,2]]
У меня уже есть решение, которое строит матрицу
[[1,0,0,0],
[0,1,1,1]]
и оставил умножить исходную матрицу на это, чтобы получить желаемую матрицу, что, я думаю, должно быть довольно быстрым, но я думаю, что может быть что-то более быстрое, включающее что-то похожее на numpy.reduceat (https://docs.scipy.org/doc/numpy/reference/generated/numpy.ufunc.reduceat.html) с использованиемМассив разделов. Любая помощь?
Подождите ... Я просто прочитал документацию Reduat, и вы можете буквально просто сделать np.add.reduceat(matrix, partition, axis=0)
. Я помню, что вы не могли этого сделать. Я думаю, это потому, что для моего приложенияМне нужно было сделать это для разреженной матрицы. Так что кто-нибудь может посоветовать, как это сделать, когда входной двумерный массив numpy находится в разреженном формате?