Tengo dos arreglos numpy de 4 artículos cada uno. El elemento i de la primera matriz está correlacionado con el elemento i de la segunda matriz, y así sucesivamente. Necesito elegir aleatoriamente N elementos de la primera matriz, pero me gustaría mantener la 'asociación' con la segunda, de modo que si selecciono el elemento # 2 de la primera matriz, se elige el elemento # 2 de la segunda. también.

Una muestra del código que estoy usando actualmente:

data = np.array([13170.06, 12552.34,  12420.39, 12336.24])
data2 = np.array([6217.69,  12242.05,  9218.21,  5095.23])

choice = data[np.random.choice(len(data), size=1, replace=False)] #In this way I pick 1 item

Básicamente, si el código muestra 13170.06, necesito asociar algo como choice2 = 6217.69, o en cualquier caso, elegir el mismo elemento i también de la segunda matriz. ¿Cómo puedo hacerlo?

0
Hypernova 24 jun. 2020 a las 17:15

3 respuestas

La mejor respuesta

Puede elegir un índice al azar y luego usar ese índice en ambas matrices:

random_index = np.random.choice(np.arange(len(data)), size=1, replace=False)
data[random_index]
data2[random_index]
1
Bram Dekker 24 jun. 2020 a las 14:19

Simplemente puede combinar ambas matrices en una matriz numpy

res = np.vstack((data,data2)).T

Más tarde, podría elegir una muestra aleatoria que contendrá ambos elementos correspondientes

sample = res[np.random.choice(len(data))]
elem1 = sample[0]
elem2 = sample[1]
0
MedoAlmasry 24 jun. 2020 a las 14:25

¿Qué tal generar el índice al azar y luego elegir los elementos de ambas matrices? P.ej.:


index = np.random.randint(len(data))

0
silentin 24 jun. 2020 a las 14:19