Этот ответ не идеален для этого примера, но может быть полезен в других ситуациях, когда вы хотите преобразовать плотное представление в разреженное представление.В этом случае мы конвертируем 1D массив в 2D массив с отступом.Например, вы хотите иметь возможность использовать np.sum
:
total = []
vp = [10,20,30,40,50,60]
color = [3,2,1]
# padding (numpy friendly)
max_len = max(color)
vp_with_padding = [
vp[sum(color[:i]):sum(color[:i])+l] + [0] * (max_len - l)
for i, l in enumerate(color)
]
# [[10, 20, 30], [40, 50, 0], [60, 0, 0]]
total = np.sum(vp_with_padding, 1)
# similar to:
#total = [sum(x) for x in vp_with_padding]