#python #arrays #numpy #shuffle
Вопрос:
У меня есть массив 4D и массив 1D:
import numpy as np
data = np.random.randn(10, 1, 5, 5) # num_records, depth, height, width
labels = np.array([1,1,1,1,1,0,0,0,0,0])
Я хочу перемешать данные и метки, num_records
чтобы получить labels
их в случайном порядке.
Я знаю, что можно было бы использовать shuffle
функцию: np.random.shuffle(data)
. Но я не знаю, как сохранить связь между data
labels
перетасовкой и после нее.
Ответ №1:
Это перемешивает оба массива вместе:
import numpy as np
data = np.random.randn(10, 1, 5, 5) # num_records, depth, height, width
labels = np.array([1,1,1,1,1,0,0,0,0,0])
# shuffle indices
idx = np.random.permutation(range(len(labels)))
# shuffle together
data, labels = data[idx,:,:,:], labels[idx]
Комментарии:
1. Вам не нужны конечные двоеточия в numpy.
data, labels = data[idx], labels[idx]
будет делать то же самое
Ответ №2:
import sklearn.utils as sku
array1_shuffled, array2_shuffled = sku.shuffle(array1, array2)
https://www.kite.com/python/answers/how-to-shuffle-two-numpy-arrays-in-unision-in-python