I have a 2d ndarray called weights
of shape (npts, nweights). For every column of weights
, I wish to randomly shuffle the rows. I want to repeat this process num_shuffles
times, and store the collection of shufflings into a 3d ndarray called weights_matrix
. Importantly, for each shuffling iteration, the shuffling indices of each column of weights
should be the same.
Below appears an explicit naive double-for-loop implementation of this algorithm. Is it possible to avoid the python loops and generate weights_matrix
in pure Numpy?
import numpy as np
npts, nweights = 5, 2
weights = np.random.rand(npts*nweights).reshape((npts, nweights))
num_shuffles = 3
weights_matrix = np.zeros((num_shuffles, npts, nweights))
for i in range(num_shuffles):
indx = np.random.choice(np.arange(npts), npts, replace=False)
for j in range(nweights):
weights_matrix[i, :, j] = weights[indx, j]
Aucun commentaire:
Enregistrer un commentaire