Closed alex-s-gardner closed 1 month ago
How about:
fill(NaN, (d1,d2,d3))
Try it ;)
It's almost like someone had already thought of, and documented, this... works like a charm
d1 = Dim{:d1}(["🤦", "🤡", "😳"])
d2 = Dim{:d2}('a':'f')
fill(NaN, (d1,d2))
╭─────────────────────────╮
│ 3×6 DimArray{Float64,2} │
├─────────────────────────┴───────────────────────────── dims ┐
↓ d1 Categorical{String} ["🤦", "🤡", "😳"] ReverseOrdered,
→ d2 Categorical{Char} 'a':1:'f' ForwardOrdered
└─────────────────────────────────────────────────────────────┘
↓ → 'a' 'b' 'c' 'd' 'e' 'f'
"🤦" NaN NaN NaN NaN NaN NaN
"🤡" NaN NaN NaN NaN NaN NaN
"😳" NaN NaN NaN NaN NaN NaN
PR this 😉
@lazarusA are you thinking we should add support for:
DimArray(NaN, (d1,d2))
or do we just stick with what's already supported?
fill(NaN, (d1,d2))
julia> using OffsetArrays
julia> fill(NaN, -10:10, 1:10)
21×10 OffsetArray(::Matrix{Float64}, -10:10, 1:10) with eltype Float64 with indices -10:10×1:10:
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
⋮ ⋮
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
so I would suggest the second one :)
I like the fill
method. Although, I will prefer the use of FillArrays
package for that or similar, so that we don't actually allocate that much. In yax, we use them like this .
It already works :)
OK we're all in agreement then, DimensionalData rocks as is
This is a typical pattern when I work with DimensionalData:
it seems
fill(NaN, length(d1),length(d2), length(d3))
could be handled internally when a single element is passed toDimArray
... so the above would become:which is much easier to read