簡體   English   中英

如何檢查 Matrix 中的 undef 值(在 Julia 中)並分配一個新值?

[英]How to check for an undef value in a Matrix (in Julia) and assign a new value?

我想創建一個未定義值的矩陣 A 並讓下面的代碼工作得很好。

A = Matrix{Tuple{Float64, Array{Int64, 1}}}(undef, 100, 100)

后來,我想檢查一個特定的單元格是否未定義,如果是,則在計算后分配一個值。 我試過isdefined(A, i, j)但它給出了太多 arguments 的錯誤。如何檢查#undef並僅在它未定義時分配?

isdefined上的文檔僅提供了一種用於一維數組的方法,如何在矩陣上實現相同的方法?

您可以使用isassigned function(在isdefined的幫助字符串中提到,順便說一句)。 isdefined一樣,它似乎只接受線性索引,但您可以從LinearIndices獲得這些索引。

julia> A = Matrix{Tuple{Float64, Array{Int64, 1}}}(undef, 100, 100);

julia> A[5, 4] = (2.1, [5])
(2.1, [5])

julia> isassigned(A, LinearIndices(A)[1, 1])
false

julia> isassigned(A, LinearIndices(A)[5, 4])
true

編輯:如@PrzemyslawSzufel 的回答所示,您不需要線性索引。 不過,似乎沒有記錄,直到並包括 v1.5.1

使用isassigned

julia> A[2,3]=(3.0, [])
(3.0, Any[])

julia> isassigned(A,2,3)
true

julia> isassigned(A,3,3)
false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM