Java에서 2차원 배열의 행을 스크램블하는 방법은 무엇인가요? 많은 개발자들이 자주 겪는 문제입니다. Collections 클래스의 shuffle() 메서드를 사용하면 2차원 배열의 행을 섞을 수 있습니다. 이 메서드는 컬렉션의 요소 순서를 무작위로 섞을 수 있습니다. 먼저 2차원 배열을 List 형식으로 변환한 후 shuffle() 메서드를 사용하여 목록을 무작위로 정렬해야 합니다. 마지막으로 목록을 다시 2차원 배열로 변환하면 행 섞기가 완료됩니다. 이 방법은 간단하고 구현하기 쉬우며 2차원 배열의 행을 효과적으로 스크램블할 수 있으며 개발자에게 보다 유연한 데이터 처리 방법을 제공합니다.
제가 겪고 있는 문제는 2D 배열의 행과 열이 뒤섞여 있다는 것인데 어떻게 해결해야 할지 모르겠습니다.
으아악
보시다시피 다른 방법도 있지만 이 shuffle2darray() 방법만 제대로 작동합니다.이 방법으로 데이터를 무작위로 10개로 분할하여 10개의 교차 검증을 수행할 수 있습니다
코드에 인쇄 문을 삽입하고 셔플을 시도하기 전후에 2D 배열을 확인한 다음 csv 파일을 확인하여 행의 순서가 올바른지 확인했습니다.
다음은 필터링 전의 작은 예입니다.
cpi_9606.ensp00000000412 | cpi_9606.ensp00000000442 | cpi_9606.ensp00000001008 | cpi_9606.ensp00000001146 | cpi_9606.ensp00000002165 | cpi_9606.ensp00000002829 | cpi_9606.ensp00000003084 | cpi_9606.ensp00000003100 | |
---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 180 |
cpi_9606.ENSP00000001008 | cpi_9606.ENSP00000003084 | cpi_9606.ENSP00000003100 | cpi_9606.ENSP00000005178 | cpi_9606.ENSP00000011292 | cpi_9606.ENSP00000011653 | cpi_9606.ENSP00000012443 | cpi_9606.ENSP00000013034 | cpi_9606.ENSP00000014930 | |
---|---|---|---|---|---|---|---|---|---|
900 | 0 | 0 | 0 | 900 | 0 | 0 | 0 | ||
0 | 0 | 0 | 0 | 0 | 928 | 900 | 338 | ||
236 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
어둠 속에서 열심히 시도해 보면 다음과 같을 것 같아요:
으아악
셔플하려면 라이너입니다. 자신이 소유한 모든 코드를 다른 사람에게 양도할 수 있습니다:으아악
그렇다면 이것이 왜 작동하는 걸까요?
2차원 배열이라는 것이 없거든요. java에는 전혀 없습니다.
당신이 소유한 것. int[][] allfeatures
不是二维数组。它是一个一维数组,其组件类型为 int 数组。因此, arrays.aslist(allfeatures)
非常好,因为您有一个对象数组(不是基元) - 每个对象都是一个 int 数组。该表达式的类型为 list<int[]>
지원되는 작업이 매우 좋습니다. arrays.aslist
返回一个仍然由底层数组支持的列表。因此, .set()
有效,但 .add()
无效(因为数组可以更改其元素,但不能增长或缩小)。 collections.shuffle
可以打乱任何列表,并且仅使用 .set
和 .get
来执行此操作: arrays.aslist
. allfeatures
을 유지하려면 먼저 복제하세요. allfeatures
으아악
위 내용은 Java에서 2D 배열의 행을 섞는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!