如何从二维 java 数组中获取一列?
Posted
技术标签:
【中文标题】如何从二维 java 数组中获取一列?【英文标题】:How to get a column from a 2D java array? 【发布时间】:2010-11-09 20:46:38 【问题描述】:我知道二维数组是数组的数组。要获得一行,您可以这样做:
rowArray = my2Darray[row]
由于每一行可以有不同的大小,我假设它不是内置从二维数组中获取一列的。它使我相信您必须执行以下操作:
for(int row = 0; row < numRows; row++)
colArray[row] = m2Darray[row][columnOfInterest];
这是正确的吗?这是唯一的方法吗?
【问题讨论】:
你的意思是colArray[row] = m2Darray[row][columnOfInterest];
?
如果您必须访问很多列,也许将矩阵转置作为预处理步骤,然后访问转置矩阵的行可能会有所帮助。
【参考方案1】:
如果您被锁定为使用二维数组,那么是的,这就是 afaik。但是,一个可能对您有帮助的建议(如果可能的话):
将数组包装在处理列提取的类中。
祝你好运。
【讨论】:
【参考方案2】:Commons math 有一些您可能想查看的工具:
double[][] data = new double[10][10];
BigMatrix matrix = MatrixUtils.createBigMatrix(data);
matrix.getColumnAsDoubleArray(0);
Commons Math Library
【讨论】:
【参考方案3】:你的路就是你要走的路。但是,如果您必须多次这样做,我可能会建议将其存储在列中。 (或两种方式)
【讨论】:
【参考方案4】:其实我会写这个作为评论,但我的声誉仍然很低,所以我必须回答:
你的意思是:
for(int row = 0; row < numRows; row++)
colArray[row] = m2Darray[row][columnOfInterest];
顺便说一句:我想你是对的。没有更简单的方法。
【讨论】:
【参考方案5】:int[][] array = new int[rows][coloumn];
for (int i = 0 ; i < array.length ; i++)
for (int j = 0 ; j < array[].length; j++)
int col = array[j][i];
【讨论】:
【参考方案6】:实际上最新版本的 Apache Commons (3.5) 没有 BigMatrix 类。取而代之的是,我们可以使用 RealMatrix
double[][] data = new double[10][10];
RealMatrix rm = new Array2DRowRealMatrix(data);
rm.getColumn(i);
【讨论】:
【参考方案7】: /**
input data
**/
int[][] r =
1, 2,
3, 4
;
//the colum index
int colIndex = 1;
Integer[] col = Arrays.stream(r).stream().map(arr -> arr[colIndex]).toArray(size -> new Integer[size]);
//col data
for (Integer integer : col)
System.out.println(integer);
这里会打印一整列的二维矩阵数据。
【讨论】:
【参考方案8】:另一种方法是将行存储为列,反之亦然。例如我需要做完全相同的事情,我最初计划有一个包含 10 行和 2 个列的数组。由于这个限制,我只是交换了行和列并创建了一个包含 10 列和 2 行的数组。然后我可以使用 array[0] 从新数组中获取行(这将是我原始数组的一列)。当然,只有当您是该数组的创建者时,您才具有这种灵活性。
希望对您有所帮助...
【讨论】:
【参考方案9】:您必须使用 StringBuilder 类在字符串末尾追加新字符
StringBuilder s=new StringBuilder();
for(int i=0;i<n;i++)
s.append(arr[i][column]);
【讨论】:
【参考方案10】:偶然看到这篇文章。对列数组执行数组复制或操作等操作的另一种方法是转置数组/矩阵。
简单来说
一个。转置 2Darray / 矩阵(即 6x5 ==> 5x6 2Darray) 对列数组执行操作 再次转置 ==> 回到原来的 2Darray。这种方法已用于接缝雕刻——图像裁剪技术
【讨论】:
【参考方案11】:试试这个
int column = 3;
double result = array[][column];
祝你好运
【讨论】:
以上是关于如何从二维 java 数组中获取一列?的主要内容,如果未能解决你的问题,请参考以下文章