如何从2D java数组中获取列?

如何从2D java数组中获取列?,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我知道2d数组是数组的数组。要获取行,您可以执行以下操作: rowArray = my2Darray[row] 由于每一行的大小可能不同,我假设它不是内置的,用于从二维数组中获取列。这让我相信你必须做一些事情,比如: for(int row = 0; row < numRows; row++) { colArray[row] = m2Darray[row][columnOfInterest]; } for(int行=0;行

我知道2d数组是数组的数组。要获取行,您可以执行以下操作:

rowArray = my2Darray[row]
由于每一行的大小可能不同,我假设它不是内置的,用于从二维数组中获取列。这让我相信你必须做一些事情,比如:

for(int row = 0; row < numRows; row++)
{
    colArray[row] = m2Darray[row][columnOfInterest];
}
for(int行=0;行

这是正确的吗?这是唯一的方法吗?

你的方法就是要走的方法。但是,如果您必须多次这样做,我可能建议将其存储在列中。(或两种方式)

Commons math提供了一些您可能想要查看的工具:

double[][] data = new double[10][10];
BigMatrix matrix = MatrixUtils.createBigMatrix(data);
matrix.getColumnAsDoubleArray(0);

事实上,我会写这篇评论,但我的声誉仍然很低,所以我必须回答:

我猜你的意思是:

for(int row = 0; row < numRows; row++)
{
    colArray[row] = m2Darray[row][columnOfInterest];
}
for(int行=0;行

顺便说一句:我想你是对的。没有比这更简单的方法了。

如果你被锁定在使用2d阵列,那么是的,这很好。但是,一个可能对您有帮助的建议(如果可能):

将数组包装在处理列获取的类中


祝你好运。

另一种方法是将行存储为列,反之亦然。e、 我需要做完全相同的事情,我最初计划有一个10行2列的数组。由于这个限制,我只是交换了我的行和列,并创建了一个包含10列和2行的数组。然后我可以使用数组[0]从新数组中获取行(这将是我原始数组的一列)。当然,只有当您是该阵列的创建者时,您才具有这种灵活性

希望对…有所帮助。

int[]array=newint[rows][coloumn];
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]; 
    }
}
for(int i=0;i
试试这个

int column = 3;
double result = array[][column];

祝你好运

事实上,最新版本的Apache Commons(3.5)没有BigMatrix类。我们可以使用RealMatrix来代替它

double[][] data = new double[10][10];
RealMatrix rm = new Array2DRowRealMatrix(data);
rm.getColumn(i);

只是偶然发现了这篇文章。对列数组执行数组复制或操作等操作的另一种方法是转置数组/矩阵

简而言之

  • a。转置2Darray/矩阵(即6x5==>5x6 2Darray)
  • 对列数组执行操作
  • 再次转置==>返回原始数组

这种方法已用于接缝雕刻-图像裁剪技术

您必须使用StringBuilder类在字符串末尾附加新字符

    StringBuilder s=new StringBuilder();
    for(int i=0;i<n;i++)
        s.append(arr[i][column]);
StringBuilder s=new StringBuilder();
对于(int i=0;i

在这里,它将在2D矩阵中打印一整列数据。

您的意思是
colArray[row]=m2Darray[row][columnOfInterest];
?如果您必须访问很多列,可能需要将矩阵转置作为预处理步骤,然后访问转置矩阵的行可能会有所帮助。
    /**
     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);
    }