en F #, array.append puede unir dos matrices; ¿Hay alguna manera de agregar 2 objetos array2D en uno o en columnas, unir varias matrices 1-D en un objeto array2D?F # cómo anexar/unir array2D y combinar matrices 1D a array2D
Respuesta
El array2D function su vez, cualquier seq<#seq<'T>>
en un 'T [,]
así que debería funcionar para convertir un grupo de matrices 1D en una matriz 2D.
let arr1 = [| 1; 2; 3 |]
let arr2 = [| 4; 5; 6 |]
let combined = array2D [| arr1; arr2 |]
No creo que haya nada incorporado para manejar esto. Sin embargo, puede definir su propio método reutilizable basado en Array2D.init
o Array2D.blit
. Si necesita combinar varias columnas en un todo lógico, creo que con frecuencia sería más conveniente usar una matriz de matrices en lugar de una matriz 2D (y, en general, las operaciones de matriz 1D en .NET son significativamente más rápidas que las de múltiples operaciones de matriz dimensional).
Por lo que yo puedo ver, no hay ninguna función # biblioteca F, que convertiría varias matrices 1D en un único array 2D, pero usted puede escribir su propia función usando Array2D.init
:
let joinInto2D (arrays:_[][]) =
Array2D.init arrays.Length (arrays.[0].Length) (fun i j ->
arrays.[i].[j])
Recibe una matriz de matrices, por lo que cuando lo llame, le dará una matriz que contiene todas las matrices que desea unir (por ejemplo, [| arr1; arr2 |]
para unir dos matrices). La función concatena matrices 1D múltiples en una única matriz 2D que contiene una fila para cada matriz de entrada. Supone que la longitud de todas las matrices dadas es la misma (puede ser una buena idea agregar una verificación para verificar eso, por ejemplo usando Array.forall
). La función init
crea una matriz de las dimensiones especificadas y luego llama a nuestra función lambda para calcular un valor para cada elemento: en la función lambda, utilizamos la fila como un índice en la matriz de matrices y la columna como un índice en el individuo formación.
Este es un ejemplo que muestra cómo utilizar la función:
> let arr1 = [| 1; 2; 3 |]
let arr2 = [| 4; 5; 6 |];;
> joinInto2D [| arr1; arr2 |];;
val it : int [,] = [[1; 2; 3]
[4; 5; 6]]
EDIT: Ya existe una función para hacer que - agradable! Voy a dejar la respuesta en este caso, ya que todavía puede ser útil, por ejemplo, si desea unirse a matrices 1D como columnas (en lugar de filas, que es el comportamiento implementado por array2D
.
gracias Tom, sí Siempre quiero unir matrices como columnas. – ahala
- 1. Array2D a la matriz
- 2. ¿Cómo puedo crear matrices multidimensionales en Perl?
- 3. F # Tipos de matriz multidimensional
- 4. ¿Cómo puedo combinar matrices PHP?
- 5. ¿Ventana giratoria para matrices 1D en Numpy?
- 6. PHP: Combinar matrices multidimensionales
- 7. ¿Es legal acceder a una matriz bidimensional como si fuera unidimensional?
- 8. combinar dos matrices
- 9. matlab - cómo combinar/entrelazar 2 matrices?
- 10. Combinar dos matrices en Hash
- 11. Combinar dos matrices en JavaScript
- 12. Combinar dos matrices de enteros
- 13. ¿Cómo las matrices 2D en C se convierten en matrices 1D?
- 14. Combinar dos matrices en una matriz en python y ordenar
- 15. Combinar matrices ordenadas N en ruby perezosamente
- 16. Combinar F # asíncrono y tal vez la expresión de cálculo
- 17. Cómo aplanar matriz 2D a matriz 1D?
- 18. ¿Es posible combinar múltiples atributos en F #?
- 19. Cómo combinar PHP y Prolog
- 20. Combinar 2 matrices de diferentes longitudes
- 21. cómo combinar dos matrices sumando los valores fusionados
- 22. ¿Cómo encontrar los mínimos locales de una matriz multidimensional suave en NumPy de manera eficiente?
- 23. ¿Combinar itertools y multiprocesamiento?
- 24. ¿Cómo combinar varias matrices en una lista usando Linq?
- 25. de protocolo - almacenar una doble matriz, 1D, 2D y 3D
- 26. ¿Cómo combinar secuencias ordenadas?
- 27. ¿Cómo combinar CMMI y Scrum?
- 28. R: ¿cómo combinar dos matrices de acuerdo con sus nombres de columna y fila?
- 29. ¿Cómo combinar dos matrices de objetos JSON? ¿Eliminar duplicados y conservar el orden en JavaScript/jQuery?
- 30. ¿Cómo combinar callLater y addCallback?
gracias. esto es muy útil. yo había pensado variedad de matriz es el mismo que array2D en F #. – ahala