import numpy as np

# Generate arrays of random numbers
D = np.random.uniform(0, 1, 100)  # 100 random numbers between 0 and 1
S = np.random.randint(0, 10, 100)  # 100 random integers between 0 and 9

# Find unique values in S and their corresponding indices
unique_vals, inverse_indices = np.unique(S, return_inverse=True)

# Calculate mean of D values for each unique value in S
D_means = np.zeros(len(unique_vals))
for i, val in enumerate(unique_vals):
    D_means[i] = np.mean(D[inverse_indices == i])

# Print mean of D values for each unique value in S
print(D_means)