gpt4 book ai didi

F# Array2D 切片

转载 作者:行者123 更新时间:2023-12-04 16:20:01 34 4
gpt4 key购买 nike

是否可以在 F# 中对 Array2D 进行切片?
说,let tmp =Array2D.init 100 100 (fun x y -> x * 100 + y)
如何从 tmp 中检索某些列或某些行喜欢 tmp.[0,1..] ?

最佳答案

从二维数组中提取一维部分时,我发现使用 Seq.Cast<T> 很方便。 .它以从左到右/从上到下的顺序从 2D 数组中生成元素。

像这样:

let A = array2D [[1;2;3];[4;5;6];[7;8;9]]

let flatten (A:'a[,]) = A |> Seq.cast<'a>

let getColumn c (A:_[,]) =
flatten A.[*,c..c] |> Seq.toArray

let getRow r (A:_[,]) =
flatten A.[r..r,*] |> Seq.toArray

以及 FSI 中的一个示例:
> flatten A;;
val it : seq<int> = seq [1; 2; 3; 4; ...]
> getRow 2 A;;
val it : int array = [|7; 8; 9|]
> getColumn 0 A;;
val it : int array = [|1; 4; 7|]

关于F# Array2D 切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2366899/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com