I have a List of N items, each of d dimensions (so essentially a N x d list). For each of the items, I want to find the product of item transposed with itself, So, x.xT for each of the N items. This will give me a N x d x d array. How can I do it efficiently in numpy. At this moment, I am looping through each of the items and finding the transpose separately.

```
for i in range(len(mu[0])):
current_mu = mu[i] # list of d elements
distances = []
for index in range(len(samples)):
distance = np.asarray(current_mu - samples[index])[:, None] # list of d elements
distances.append(distance * distance.T) # each becomes d x d
```

Can I remove the second nested loop or is it required?