new*_*his 3 types matrix slice argument-error julia
我有以下代码,其中给定i我想找到i矩阵的第行。我的代码如下:
function f(mat,i)
println(mat[:i,:])
end
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
ArgumentError: invalid index: :i of type Symbol
Run Code Online (Sandbox Code Playgroud)
我尝试打印iusing的类型typeof,它说是Int64。此外,如果我尝试只找到第一行,那么mat[:1,:]我就可以完成这项工作,所以我认为问题不在于切片语法。
例如,您可以得到矩阵的第一行,如下所示:
\njulia> x = rand(4, 5)\n4\xc3\x975 Matrix{Float64}:\n 0.995364 0.00204836 0.0821081 0.732777 0.705893\n 0.4392 0.151428 0.0978743 0.184995 0.867329\n 0.863659 0.367339 0.252248 0.235425 0.0343476\n 0.756938 0.119276 0.857559 0.0982663 0.938148\n\njulia> x[1, :]\n5-element Vector{Float64}:\n 0.9953642825497493\n 0.0020483620556226434\n 0.0821081267390984\n 0.7327765477421397\n 0.7058932509878071\n\njulia> x[1:1, :]\n1\xc3\x975 Matrix{Float64}:\n 0.995364 0.00204836 0.0821081 0.732777 0.705893\nRun Code Online (Sandbox Code Playgroud)\n请注意,通常您只需传递一个行号(在我的例子中1)来指示您要获取的行。在这种情况下,您会得到一个Vector.
但是,您可以使用切片1:1来获取 1 元素范围的行。在这种情况下,结果是Matrix一行。
现在的问题是:1. 见下文:
julia> :1\n1\n\njulia> typeof(:1)\nInt64\n\njulia> :1 == 1\ntrue\n\njulia> :x\n:x\n\njulia> typeof(:x)\nSymbol\nRun Code Online (Sandbox Code Playgroud)\n如您所见,:1与 完全相同1。然而,eg:x是一种特殊类型,称为Symbol。它最常见的用途是表示结构中的字段名称。由于字段名称不能以数字开头(Julia 中的变量名称,以及其他编程语言中的变量名称)必须以其他内容开头,例如x我的示例中的字母,因此这里没有歧义。将其:放在数字前面是无操作,而将其放在有效变量标识符前面会创建一个Symbol. Symbol有关更多示例,请参阅 Julia REPL 中的帮助。
在 Julia 范围中,始终需要传递开始和结束,即从包含开始到结束的a:b范围,示例:ab
julia> 1:1\n1:1\n\njulia> collect(1:1)\n1-element Vector{Int64}:\n 1\n\njulia> 2:4\n2:4\n\njulia> collect(2:4)\n3-element Vector{Int64}:\n 2\n 3\n 4\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1456 次 |
| 最近记录: |