^no. не таким образом. 2D. Я хочу перетасовать один D, не изменяя при этом других D. plus, что касается андроида. Получите это отсюда.Перемешать 2D-массив в одном измерении без эффекта другого измерения
У меня есть массив 2D который состоит из элементов:
Пример:
Document 1 = ["I", "am", "awesome"]
Document 2 = ["I", "am", "great", "great"]
Словарь:
["I", "am", "awesome", "great"]
Так 2D массив будет выглядеть следующим образом:
[1, 1, 1, 0]
[1, 1, 0, 2]
Что я хочу т сделать это перетасовать вокруг расположения документов, поэтому там, где мы когда-то было:
Document 1 = [1, 1, 1, 0]
Document 2 = [1, 1, 0, 2]
теперь могут иметь:
Document 2 = [1, 1, 0, 2]
Document 1 = [1, 1, 1, 0]
Или мы не могли бы. Его следует перетасовать случайным образом.
Непонятный this.
Как реализовать это?
Моя структура данных выглядит следующим образом:
int z = 0;
for (Cell< int[] , String , Integer > cell: train_freq_count_against_globo_dict.cellSet())
{
int[] container_of_feature_vector = cell.getRowKey();
// 'q' CAN'T be shuffled, 'z' MUST be shuffled.
for (int q = 0; q < globo_dict_size; q++)
{
feature_matrix__train[z][q] = container_of_feature_vector[q];
}
// use 1 and -1 not 0 and 1
outputs__train[z] = String.valueOf(cell.getColumnKey()).equals(LABEL) ? 1.0 : -1.0;
z++;
}
Смысл этого заключается в реализации стохастического градиентного спуска.
UPDATE:
static double[][] shuffleArray(double[][] input_array)
{
Random rnd = new Random();
for (int i = input_array.length - 1; i > 0; i--)
{
int index = rnd.nextInt(i + 1);
// Simple swap
double[] container = input_array[index];
input_array[index] = input_array[i];
input_array[i] = container;
}
return input_array;
}
возможно дубликат [Random перетасовки массива] (http://stackoverflow.com/questions/1519736/random-shuffling-of-an-array) –
@ThomasJungblut нет, не то же самое. Я хочу просто перетасовать 1D без эффекта другого D –
работает точно так же. –