trong F #, array.append có thể nối hai mảng; là có một cách để nối thêm 2 đối tượng array2D vào một hoặc cột-khôn ngoan tham gia một số mảng 1-D vào một đối tượng array2D?F # cách nối/nối array2D và kết hợp mảng 1D với mảng2D
Trả lời
Các array2D function sẽ biến bất kỳ seq<#seq<'T>>
vào một 'T [,]
vì vậy nó phải làm việc cho biến một loạt các mảng 1D thành một mảng 2D.
let arr1 = [| 1; 2; 3 |]
let arr2 = [| 4; 5; 6 |]
let combined = array2D [| arr1; arr2 |]
Tôi không nghĩ có bất kỳ thứ gì được tích hợp sẵn để xử lý việc này. Tuy nhiên, bạn có thể xác định phương pháp có thể sử dụng lại của riêng mình dựa trên Array2D.init
hoặc Array2D.blit
. Nếu bạn cần kết hợp nhiều cột vào một tổng hợp lôgíc, tôi nghĩ sẽ thường thuận tiện hơn khi sử dụng mảng mảng chứ không phải mảng 2D (và nói chung, hoạt động mảng 1D trong .NET nhanh hơn đáng kể so với đa số) hoạt động mảng chiều).
Theo như tôi có thể nhìn thấy, không có F # thư viện chức năng đó sẽ lần lượt nhiều mảng 1D thành một mảng 2D duy nhất, nhưng bạn có thể viết chức năng của riêng bạn sử dụng Array2D.init
:
let joinInto2D (arrays:_[][]) =
Array2D.init arrays.Length (arrays.[0].Length) (fun i j ->
arrays.[i].[j])
Phải mất một mảng của mảng, vì vậy khi bạn gọi nó, bạn sẽ cung cấp cho nó một mảng chứa tất cả các mảng mà bạn muốn tham gia (ví dụ: [| arr1; arr2 |]
để nối hai mảng). Hàm ghép nối nhiều mảng 1D thành một mảng 2D chứa một hàng cho mỗi mảng đầu vào. Nó giả định rằng độ dài của tất cả các mảng đã cho giống nhau (có thể là một ý tưởng tốt để thêm một kiểm tra để xác minh rằng, ví dụ sử dụng Array.forall
). Hàm init
tạo một mảng các thứ nguyên được chỉ định và sau đó gọi hàm lambda của chúng tôi để tính giá trị cho mỗi phần tử - trong hàm lambda, chúng tôi sử dụng hàng làm chỉ mục trong mảng mảng và cột làm chỉ mục cho từng cá nhân mảng.
Dưới đây là một ví dụ cho thấy làm thế nào để sử dụng chức năng:
> let arr1 = [| 1; 2; 3 |]
let arr2 = [| 4; 5; 6 |];;
> joinInto2D [| arr1; arr2 |];;
val it : int [,] = [[1; 2; 3]
[4; 5; 6]]
EDIT: Đã có một chức năng để làm điều đó - tốt đẹp! Tôi sẽ để lại câu trả lời ở đây, bởi vì nó vẫn có thể hữu ích, ví dụ nếu bạn muốn tham gia mảng 1D như cột (thay vì hàng, đó là hành vi thực hiện bởi array2D
.
nhờ Tom, vâng Tôi luôn muốn tham gia mảng dưới dạng cột. – ahala
- 1. Array2D để Mảng
- 2. F # Các loại mảng đa chiều
- 3. str_replace() với mảng kết hợp
- 4. cách nhanh nhất để điền một mảng numpy 1D
- 5. Ánh xạ một mảng 2D lên một mảng 1D
- 6. JavaScript: Cách kết hợp/kết hợp hai mảng để nối vào một mảng?
- 7. Các mảng kết hợp và Java
- 8. F # mô hình kết hợp kỳ quặc
- 9. Chuyển đổi một mảng 2D thành một mảng 1D
- 10. hiệu quả NumPy 2D mảng xây dựng từ mảng 1D
- 11. Tạo mảng 2D từ mảng 1D trong MATLAB
- 12. Chuyển đổi mảng 1D thành mảng 2D theo dạng số
- 13. Hãy so sánh hai mảng kết hợp và tạo ra một mảng mới với các mảng phù hợp, PHP
- 14. PHP: Làm thế nào để có được tất cả các kết hợp có thể có của mảng 1D?
- 15. Kết hợp hai mảng
- 16. Làm cách nào để "làm phẳng" hoặc "chỉ mục" mảng 3D trong mảng 1D?
- 17. Cách thêm giá trị mảng vào giữa mảng kết hợp?
- 18. Làm thế nào để nhân mảng 2D numpy với mảng 1D numpy?
- 19. Chuyển đổi mảng 1D thành ma trận khối u
- 20. Mảng kết hợp từ chuỗi
- 21. tạo mảng mảng kết hợp trong PHP
- 22. Cách lấy mảng giá trị từ một mảng kết hợp?
- 23. Cửa sổ cuộn cho mảng 1D trong Numpy?
- 24. Làm cách nào để hợp nhất mảng và giữ phím?
- 25. Làm thế nào để khai báo và sử dụng mảng byte 1D và 2D trong Verilog?
- 26. cách kết nối F # với cơ sở dữ liệu MySQL?
- 27. Powershell - kết hợp các mảng
- 28. Cách làm phẳng (định hình lại thành 1D) một mảng thứ nguyên tùy ý trong Labview
- 29. Kết hợp: tạo tất cả "trạng thái" - kết hợp mảng
- 30. Cách kết hợp PHP và Prolog
nhờ. này là rất hữu ích. tôi đã nghĩ mảng của mảng là giống như array2D trong F #. – ahala