tmp1 = np.array(['red', 'red', 'red', 'green'])
tmp2 = np.array(['white', 'black', 'blue', 'blue'])
color1_occupations = [1, 0, 1, 2]
color2_occupations = [0, 2, 0, 1]
tmp12 = np.column_stack((tmp1, tmp2))
color_occupations = np.column_stack((color1_occupations, color2_occupations))
out = np.repeat(tmp12, color_occupations.ravel())
одновременное использование повторения numpy для массивов с разными кратностями, но одинакового размера