2009-07-10 49 views
21

Sé que las matrices 2d son matrices de matrices. Para conseguir una fila que puede hacer:¿Cómo obtener una columna de una matriz java 2D?

rowArray = my2Darray[row] 

Dado que cada fila puede tener un tamaño diferente, estoy asumiendo que no está construido en conseguir una columna de una matriz 2D. Me lleva a creer que tendrías que hacer algo como:

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

¿Es esto correcto? ¿Es la única manera?

+1

¿Se refiere a 'colArray [ fila] = m2Darray [fila] [columnOfInterest]; '? – ChssPly76

+0

sí gracias :) – Derrick

Respuesta

8

Si está bloqueado para usar una matriz 2d, entonces sí, esto es afaik. Sin embargo, una sugerencia que puede ayudarlo (si es posible):

Envuelva la matriz en una clase que maneje la recuperación de columna.

Buena suerte.

2

Su camino es el camino a seguir. Sin embargo, si tiene que hacer eso muchas veces, puedo recomendar almacenarlo en columnas. (o las dos cosas)

7

Commons matemáticas tiene algunas herramientas es posible que desee comprobar hacia fuera:

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

Commons Math Library

1

Bueno, en realidad me gustaría escribir esto como un comentario, pero mi reputación es aún bajo, por lo que tengo que responder:

supongo que se refiere a:

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

Por cierto: supongo que tienes razón. No hay una manera más fácil.

0

Otra forma es almacenar las filas como columnas y viceversa. p.ej. Necesitaba hacer exactamente lo mismo y originalmente estaba planeando tener una matriz con 10 filas y 2 columnas. Debido a esta limitación, simplemente cambié mis filas y columnas y creé una matriz con 10 columnas y 2 filas. Entonces puedo usar array [0] para obtener la fila de la nueva matriz (que sería una columna de mi matriz original). Por supuesto, tienes esta flexibilidad solo si eres el creador de esa matriz.

Espero que ayude ...

2
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]; 
    } 
} 
-4

probar este

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

buena suerte

1

En realidad la nueva versión de Apache Commons (3.5) no tiene clase BigMatrix. En lugar de esto, podemos usar RealMatrix

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

Acabo de encontrar esta publicación por casualidad. Otra forma de realizar operaciones como la copia de matriz o la manipulación en matrices de columna es transponer su matriz/matriz.

Poco hablando

  • a. transponer 2Darray/matriz (es decir6x5 ==> 5x6 2Darray)
  • Realice operaciones en matrices de columna
  • transpose again ==> vuelva a su 2Darray original.

Este enfoque se han utilizado en el tallado de costura - imagen Técnica de cultivo

-1

usted tiene que utilizar la clase StringBuilder para añadir nuevo carácter al final de una cadena

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