Filter
Exclude
Time range
-
Near
#Julia言語 AbstractVectorのsubtypesをプリントしてみれば、その下にUnitRangeも含まれていることが分かります。 AbstractVectorはJuliaでの線形代数的には縦ベクトル(列ベクトル)として扱われる。 Juliaはコードはシンプルになりますが、型の世界はまるでジャングル。
Replying to @genkuroki
ご指摘ありがとうございます。ブロードキャストするのは Vector じゃないといけないと思ってたんですが、Range のままできるんですね。知らなかったです。手元で試して確かにこっちのほうがシンプルですね。
2
2
1,802
In the past, when I only had R, Mathematica, Octave, Python, etc., I strongly felt the need for this: function f(mat::AbstractMatrix{T}, u::AbstractVector{T})::AbstractMatrix where {T<:Real} Julia introduces types to data science in a higher level. #JuliaLang @JuliaLanguage
2
7
1,048
a=2:100は縦ベクトル扱いされるAbstractVector a'はaの転置の双対ベクトル a*a'は行列 a.∉(a*a',) はaの各成分について行列の表a*a'に含まれていないかどうかを計算するブロードキャスト。 (a*a',)はブロードキャストからのa*a'の保護。この辺が難しい。 ->は無名函数 x|>fはf(x)と同じ
#Julia言語 添付画像 ①九九の表は(1:9)*(1:9)'でも作れる。 ②ブロードキャストも使って素数のリストを作成。 ③100以下の素数のリストは 2:100|>a->a[a.∉(a*a',)] で作れる。 これを理解できるとJuluaで超高級電卓的シンプルなコードを大幅に書き易くなる。 github.com/genkuroki/public/…
1
4
2,005
13 Sep 2023
Replying to @tjake @TheMukel
I’m going to just add Panama c bindings and wait for vector api to improve. I’m not sure how tbh since creating new vectors happens deep in AbstractVector
1
3
249
#Julia言語 typeof(1:5) や eltype(1:5) を見るだけではなく、supertype(…(supertype(1:5))…) を見ることよりも、AbstractTrees.jlパッケージを入れて、添付画像のようにして、UnitRange型がAbstractVector型の特殊な場合になっていることを確認した方が楽。 型の世界の概略が見えていると色々楽。
1
1
2
1,456
#Julia言語 ではAbstractVector型のオブジェクトは、線形代数的には縦ベクトル(列ベクトル)扱いされます。 例えば、1:5 の型は UnitRange{Int64} になるので、AbstractVector{Int64}型になり、eltypeがInt64の縦ベクトルの扱いになります。 collect(1:5)としてVector{Int64}型に変換することは無用。
#Julia言語 うぉ!『実践Julia入門』の影響力がすごいな。 Juliaを使い始めてすぐにmethods(xx)でいろんな関数を観察! 型の世界については、 using AbstractTrees AbstractTrees.children(T::Type) = subtypes(T) print_tree(AbstractVector) で様子が分かります。これ、かなりお勧め。
1
1
3
2,320
#Julia言語 うぉ!『実践Julia入門』の影響力がすごいな。 Juliaを使い始めてすぐにmethods(xx)でいろんな関数を観察! 型の世界については、 using AbstractTrees AbstractTrees.children(T::Type) = subtypes(T) print_tree(AbstractVector) で様子が分かります。これ、かなりお勧め。
Replying to @Servantprime
methods(xx)でいろんな関数を観察してみてるんですが、面白いですね。Julia標準の関数を見つけたら必ずmethods(xx)して、その関数がどんなメソッドを持った関数なのか観察するのを今後の趣味にしたいです。 あと、無名関数とスプラット演算子がとても便利だなと感じました。
1
8
21
9,309
#Julia言語 docs.julialang.org/en/v1/man… 一般に ❌ struct Foo a end ❌ struct Foo{T} a::AbstractVector{T} end ❌ struct Foo a::Vector end のような書き方は型不安定になるので避けた方がよい。 ⭕️ struct Foo{T, Ta<:AbstractVector{T}} a::Ta end なら大丈夫。

1
1
3
1,182
huh
1
4
317
#Julia言語 私もJuliaで実際に使われている型達のなす世界は複雑で難しいと思います。 julia> ]add AbstractTrees しておいて、 using AbstractTrees AbstractTrees.children(t::Type) = subtypes(t) print_tree(AbstractVector) のようにできることを知らなかったときには、よく迷子になった。
25 Dec 2022
Juliaはとてもいい言語だと思うし好きなんだけど、型が難しい
2
829
#Julia言語 もしくは github.com/genkuroki/MetaUti… をインストールして、 using MetaUtils print_subtypes(AbstractVector) とする方法もあります。 ASTのツリー表示もできる。 これは、私がJuliaでのメタプログラミング(マクロの作り方)について学ぶために作ったパッケージです。
1
1
3
1,254
#Julia言語 Juliaの型達がなす世界の様子を見る手段を知っておかないと学習が進みません。 julia> ]add AbstractTrees しておいて、 using AbstractTrees AbstractTrees.children(t::Type) = subtypes(t) print_tree(AbstractVector) を実行すれば、縦ベクトル扱いされる型達の様子がわかる。
1
1
3
1,015