我知道2d数组是数组的数组。要获得一行,您可以这样做:
rowArray = my2Darray[row]
由于每一行可以是不同的大小,我假设它不是为了从2D数组中获取列而内置的。这让我相信你必须做类似的事情:
for(int row = 0; row < numRows; row++)
{
colArray[row] = m2Darray[row][columnOfInterest];
}
这是对的吗?这是唯一的方法吗?
答案 0 :(得分:9)
如果你被锁定使用二维数组,那么是的,这就是它。但是,一个可能对您有帮助的建议(如果可能):
将数组包装在处理列提取的类中。
祝你好运。答案 1 :(得分:7)
Commons math有一些你可能想要查看的工具:
double[][] data = new double[10][10];
BigMatrix matrix = MatrixUtils.createBigMatrix(data);
matrix.getColumnAsDoubleArray(0);
答案 2 :(得分:2)
你的方式是要走的路。但是,如果您必须多次执行此操作,我可能建议将其存储在列中。 (或两种方式)
答案 3 :(得分:1)
猜猜你的意思是:
for(int row = 0; row < numRows; row++)
{
colArray[row] = m2Darray[row][columnOfInterest];
}
顺便说一句:我想你是对的。没有更简单的方法。
答案 4 :(得分:1)
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];
}
}
答案 5 :(得分:1)
实际上最新版本的Apache Commons(3.5)没有BigMatrix类。而不是这个,我们可以使用RealMatrix
double[][] data = new double[10][10];
RealMatrix rm = new Array2DRowRealMatrix(data);
rm.getColumn(i);
答案 6 :(得分:0)
另一种方法是将行存储为列,反之亦然。例如我需要做同样的事情,我原本计划有一个10行和2列的数组。由于这个限制,我只是交换了我的行和列,并创建了一个包含10列和2行的数组。然后我可以使用array [0]从新数组中获取行(这将是我原始数组的一列)。当然,只有当你是该阵列的创造者时,你才具备这种灵活性。
希望有帮助...
答案 7 :(得分:0)
/**
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);
}
此处将以2D矩阵打印一整列数据。
答案 8 :(得分:-1)
您必须使用StringBuilder类在字符串末尾附加新字符
StringBuilder s=new StringBuilder();
for(int i=0;i<n;i++)
s.append(arr[i][column]);
答案 9 :(得分:-2)
偶然发现这篇文章。在列阵列上执行阵列复制或操作等操作的另一种方法是转置阵列/矩阵。
简短地说
这种方法已被用于缝隙雕刻 - 图像裁剪技术
答案 10 :(得分:-5)
试试这个
int column = 3;
double result = array[][column];
祝你好运