Maison Java Comment mélanger les lignes d'un tableau 2D en Java ?

Comment mélanger les lignes d'un tableau 2D en Java ?

Feb 09, 2024 pm 04:15 PM

Comment brouiller les lignes d'un tableau bidimensionnel en Java ? C’est un problème que de nombreux développeurs rencontrent souvent. Le brassage des lignes d'un tableau à deux dimensions peut être réalisé en utilisant la méthode shuffle() dans la classe Collections. Cette méthode peut modifier aléatoirement l’ordre des éléments de la collection. Tout d’abord, nous devons convertir le tableau bidimensionnel sous forme de liste, puis utiliser la méthode shuffle() pour trier aléatoirement la liste. Enfin, la reconversion de la liste en un tableau à deux dimensions termine le brassage des lignes. Cette méthode est simple et facile à mettre en œuvre, peut brouiller efficacement les lignes de tableaux bidimensionnels et offre aux développeurs un moyen plus flexible de traiter les données.

Contenu de la question

J'ai écrit du code pour lire un fichier csv et effectuer un prétraitement des données, puis il devrait mélanger les lignes d'un tableau 2D au lieu des colonnes, bien que son ordre ne puisse pas être modifié.

Le problème que j'ai est qu'il brouille les lignes et les colonnes du tableau 2D, mais je ne sais pas comment y remédier.

import java.io.*;
import java.nio.file.paths;
import java.util.*;

public class randomforest
{
  public static void shuffle2darray()
    {
        int numrows = allfeatures.length;
        list<integer> indices = new arraylist<>();

        // populate the list with indices
        for (int i = 0; i < numrows; i++) {
            indices.add(i);
        }

        // shuffle the list of indices
        collections.shuffle(indices);

        // create a copy of the original array
        int[][] shuffledarray = new int[numrows][allfeatures[0].length];

        // use shuffled indices to rearrange the rows of the original array
        for (int i = 0; i < numrows; i++) {
            shuffledarray[i] = allfeatures[indices.get(i)];
        }

        // update the original array with the shuffled values
        allfeatures = shuffledarray;
    }

    public static void main(string[] args) throws ioexception
    {
        randomforest rf = new randomforest("se-dermatitis dataset.csv");

        rf.getdatarows();
        rf.markfilters();
        rf.removeattributes();

        int count = 1;
        int counter = 1;

        int totalpredacc = 0;

        int allfeaturessize = allfeatures.length;
        int foldsize = allfeaturessize / 10;

        double[] threshold = {0.4, 0.5, 0.6, 0.7};

        shuffle2darray();
    }
}
Copier après la connexion

Il existe d'autres méthodes, comme vous pouvez le voir, mais seule cette méthode shuffle2darray() fonctionne correctement.

De cette façon, je peux diviser aléatoirement les données en 10 afin de pouvoir effectuer 10 validations croisées

J'ai essayé de mettre des instructions d'impression dans le code et j'ai essayé de vérifier le tableau 2D avant et après avoir essayé de mélanger, puis de vérifier le fichier csv pour m'assurer que les lignes étaient dans le bon ordre.

Voici un petit exemple avant filtrage :

cpi_9606.ensp00000000233cpi_9606.ensp00000000412cpi_9606.ensp00000000442cpi_9606.ensp00000001008cpi_9606.ensp00000001146cpi_9606.ensp00000002165cpi_9606.ensp00000002829cpi_9606.ensp00000003084cpi_9606.ensp0000000310000000000000000000000000000180
Après filtrage et brassage des colonnes :

cpi_9606.ENSP00000000442cpi_9606.ENSP00000001008cpi_9606.ENSP00000003084cpi_9606.ENSP00000003100cpi_9606.ENSP00000005178cpi_9606.ENSP00000011292cpi_9606.ENSP00000011653cpi_9606.ENSP00000012443cpi_9606.ENSP00000013034cpi_9606.ENSP000000149300900000900000900000009289003383222360000000

Solution de contournement

Votre extrait de code ne contient pas un élément clé : le tableau que vous souhaitez trier.

Donc, en s'amusant dans le noir, je suppose que ça ressemble à ceci :

int[][] allfeatures = ....;
Copier après la connexion

Pour mélanger, c'est un liner. Vous pouvez donner tout le code que vous possédez :

collections.shuffle(arrays.aslist(allfeatures));
Copier après la connexion

Alors, pourquoi ça marche ?

Parce qu’il n’existe pas de tableau bidimensionnel. Java ne les a pas du tout.

Ce que vous possédez

. int[][] allfeatures 不是二维数组。它是一个一维数组,其组件类型为 int 数组。因此, arrays.aslist(allfeatures) 非常好,因为您有一个对象数组(不是基元) - 每个对象都是一个 int 数组。该表达式的类型为 list<int[]>

Les opérations prises en charge sont très bonnes. arrays.aslist 返回一个仍然由底层数组支持的列表。因此, .set() 有效,但 .add() 无效(因为数组可以更改其元素,但不能增长或缩小)。 collections.shuffle 可以打乱任何列表,并且仅使用 .set.get 来执行此操作: arrays.aslist

Le résultat de tout cela est que cela va se redimensionner

tout seul. allfeatures

Si vous souhaitez conserver

inchangé, veuillez d'abord cloner : allfeatures

int[][] clone = allFeatures.clone();
Collections.shuffle(Arrays.asList(clone));
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)