我有一个数组 P 的数组,它表示一个矩阵,作为一个行向量数组(这种表示对我的目的来说更方便),我想提取该数组的列向量 j。我的第一关是:
let column (M: float[][]) (j: int) =
Array.map(fun v -> v.[j]) M
这无法编译,告诉我 v.[j] 在不确定类型的对象上使用 operator expr.[idx]。这让我感到困惑,因为将鼠标悬停在 v 上会将 v 识别为 float[],我认为它是一个行向量。
此外,以下代码有效:
let column (M: float[][]) (j: int) =
Array.map(fun v -> v) M
|> Array.map (fun v -> v.[j])
我无法理解第二个示例与第一个示例有何不同。第二个示例中的第一个映射看起来是多余的:我将一个数组映射到自身,但这似乎解决了类型确定问题。
任何帮助理解我做错了什么或没有看到将不胜感激!