ジュリア
リンクは、高速な速度を備えつつも簡単なコーディングを志向するプログラミング言語で、特にFortranやMATLAB、Python、Rのような言語を代替するという壮大な抱負を持って開発されています。これらの言語の共通点からもわかるように、科学計算分野でシェアを拡大しており、同じフィールドにいる生エビ寿司店も国内でJuliaを普及させることを目標としています。
マーク | 詳細分類 |
---|---|
Pythonに由来する特徴 | |
MATLABに由来する特徴 | |
Rに由来する特徴 | |
Julia固有に近い特徴 |
ここでJulia固有に近い特徴というのは、MATLAB、Python、Rと差別化されるという意味です。それ以外のプログラミング言語では一般的に見られる特徴かもしれません。もしこれらの言語をすでに使えるなら、実際「Juliaを学ぶ」という表現自体が奇妙です。多くの関数や表現が似ているため、これらの言語を知っていればJuliaも知っているのと同じです。Julia、MATLAB、Python、Rで等価なコードの投稿を参照してください。
Juliaで機械学習を行う方法については、機械学習カテゴリーを参照してください。
チュートリアル
インストールとパッケージ
- Juliaプログラミング言語
- WindowsでJuliaの最新バージョンをインストールする方法
- LinuxでJuliaの最新バージョンをインストールする方法
- パッケージをインストールして使用する方法
Pkg.jl
- 他のファイルで定義した関数を使用する方法
include("file.jl")
- コンソールを初期化する方法 Ctrl + L、
print("\033c")
入出力
*.mat
ファイルを読み書きする方法MAT.jl
](../../posts/2509)*.npy
ファイルを読み込む方法PyCall.jl
*.csv
ファイルを読み込む方法CSV.read()
- 2次元配列を
.csv
ファイルに出力する方法CSV.write()
*.shp
ファイルを読み込む方法Shapefile.Table()
file.choose()
のようにダイアログを開いてファイルを選択する方法open_dialog()
- Rで使っていた組み込みデータセットを読み込む方法
RDatasets.jl
- クリップボードを使用する方法
clipboard()
,clipboard(x)
- Excel
*.XLSX
ファイルを読み込む方法XLSX.jl
基本文法
- 無作為抽出する方法
rand()
- Juliaで必ず知っておくべき文法:ブロードキャスティング
f.(x)
- Juliaの強力な便利機能、マクロ
@
- 変数名にギリシャ文字や添字を使う方法
\alpha
→α
- エlegantなループを使う方法
while
、for
、zip()
- シンボル
:foo
- 感嘆符コンベンション
foo!()
- 内包表記
高度な文法
==
と===
の違い- ラムダ式
foo -> bar
- パイプ演算子を使う方法
|>
- 三項演算子
? :
- データを省略せずに出力する方法
show(stdout, "text/plain", foo)
- メタプログラミング
Meta.parse()
、eval()
- 外部プログラムを実行する方法
run()
- プログレスバーを使う方法
ProgressMeter.jl
、ProgressBars.jl
- NAVERでメールを送る方法
SMTPClient.jl
- オペレーティングシステムを確認する方法
Sys.iswindows
スプラット演算子 ...
- スプラット演算子
...
- 可変長引数関数を定義する方法
function f(x...)
- 2次元配列と行列間を変換する方法
[eachrow(M)...]
、hcat(A...)
- Juliaのスプラット演算子を使ったオプション引数の渡し方のコツ
foo(; args...)
データ構造
- 配列のスライシングとインデックス
x[1:end]
、x[[1,3,4]]
- 構造体の属性を確認する方法
propertynames()
- ディクショナリとペア
Dict()
、x => y
- 集合データ型と演算子
Set
- ベクターとタプルの違い
- 名前付きタプル
(; x, y)
- 基本データ型を変更する方法
@changeprecision
- 文字列を数値に変換する方法
parse(type, str)
- コレクションの重複をなくす方法
unique()
、allunique()
配列
- 空の配列を作る方法
- 配列のタイプを指定して定義する方法
- ベクターを生成するさまざまな方法
- 高次元ベクトルを直接定義する方法
- 配列を列ごとに計算する方法
- 配列を平行移動させる方法
circshift()
- 多次元インデックス
CatesianIndex
- 単一要素集合の要素にアクセスする関数
only
- ソート順序関数とその応用
sortperm
- カテゴリカル配列
CategoricalArrays.jl
- 名前付き配列
NamedArrays.jl
文字列
- 文字列を結合する方法
*
、string()
、join()
、^
- 変数の値を便利に出力する方法、補間法
$string
- Pythonのように文字列を扱う方法
replace(, "a" => "A")
、join()
、split()
- 文字列で特定のパターン位置を探す方法
findfirst()
、findnext()
、findlast()
- テキスト出力を装飾する組み込み関数
printstyled()
データフレーム DataFrames.jl
- 空のデータフレームを作る方法
- データフレームと2次元配列間の変換方法
Array(df)
、DataFrame(array, :auto)
- 変数名をカラム名に持つデータフレームを作る方法
DataFrame(; x, y)
- データフレームの要約を見る方法
describe()
- データフレームの特定の値を変更する方法
replace!(df, A=>B)
- データフレームをグループごとに分けて計算する方法
groupby()
、combine()
- VSCodeでデータフレームをきれいに見る方法
Main.VSCodeServer.vscodedisplay(df)
画像処理 Images.jl
- 画像配列を回転する方法
imrotate()
- 画像サイズを変更する方法
imresize()
- 画像を読み込んで行列に変換・保存する方法
convert(Array{Float64},)
- 画像を上下反転、左右反転する方法
rotr90(img')
可視化
- プロットのプロパティ一覧
- グラフのサイズと解像度を設定する方法
size=(w,h)
、dpi=
- アニメーションを作る方法
@animate
- グラフのスタイルを作る方法
RecipesBase.jl
- グラフのデフォルト設定を変更する方法
default()
- コンソールで簡単なグラフを出力する方法
UnicodePlots.jl
- 3Dグラフのカメラ角度を調整する方法
camera=(方位角, 仰角)
レンダリング
- グラフに線分を追加する方法
plot!(xs, ys)
- グラフの背景を透過して出力する方法
background_color = :transparent
- グラフの縦横比を調整する方法
ratio = :equal
- 曲線から特定の値まで/二つの曲線間/閉曲線内部を塗りつぶす方法
fill=()
- ベクトル場を描く方法
quiver(, quiver=)
テキスト
- グラフにテキストを入れる方法
annotate!()
- グラフに $\TeX$ を使用する方法
LaTexStrings.jl
、L"$f(x)$"
- グラフに日本語を入れる方法
default(fontfamily = "")
、Plots.plotly()
- グラフの凡例の位置を調整する方法
legend = :topbottom
スタイル
- スケールが異なる二つのデータの軸を共有して描く方法
twinx()
、twiny()
- グラフの背景のグリッドを装飾する方法
- グラフの軸スタイルを変更する方法
framestyle
- マーカーとラインスタイルの一覧
plot(shape=, linestyle=)
- 散布図で回帰直線を描く方法
scatter(smooth = true)
- 軸に円周率記号を使用する方法
xtick = ([π, 2π], ["π", "2π"])
色
- 色を使用する方法
- パレットを使用する方法
- カラグラデーションを使用する方法
- 色処理のためのパッケージ
Colors.jl
- グラフ要素の色を指定する方法
- 軸、軸名、目盛り、目盛り値の色を指定する方法
- 背景色を指定する方法
- カラースキームで0から1の値で色を取得する方法
get(colorschemes[:plasma], 1.0)
レイアウト
ヒートマップ
StatsPlots.jl
数学
グラフ(ネットワーク)に関連するパッケージである Graphs.jl
は、グラフ理論カテゴリーで見つけることができます。
計算
- 重みを与えてランダムサンプリングする方法
sample(, Weights())
- 小数点以下特定の桁で丸める方法
round(digits=)
- ビット配列を反転させる方法
.!(foo)
- 頻度数を計算する方法
freqtable()
- 日付および時間関連の関数を使用する方法
Dates
- 合成関数を使用する方法
∘
- 無限大を使用する方法
∞
- 近似値をチェックする方法
≈
- 複素数を使用する方法
im
- 0や欠損値を除いた平均を求める方法
mean(!iszero,)
- 0で割ったときの
Inf
とNaN
の違い NaN
の大小比較- 🔒 分散コンピューティングを行う方法
@distributed
ライブラリ
- 線形代数モジュール
LinearAlgebra
- 多項式関数パッケージ
Polynomial.jl
- 数論パッケージ
Primes.jl
- 導関数パッケージ
Calculus.jl
- 距離行列を計算する方法
Distances.jl
- シンボリック演算パッケージ
Symbolics.jl
- 回帰分析を行う方法
GLM.jl
- フーリエ変換パッケージ
FFTW.jl
- 無限配列を使用する方法
InfiniteArrays.jl
- 数値解析的な補間を行う方法
Interpolations.jl
- 有限差分を使用する方法
FiniteDifferences.jl
- クラスタリングパッケージ
Clustering.jl
- 決定木を使用する方法
DecisionTree.jl
- 自然言語処理パッケージ
TextAnalysis.jl
コード最適化テクニック
- 文字と整数の等価演算子
==
の速度比較 - 距離行列計算を最適化する方法
pairwise()
- 小数点以下を切り捨てて整数型に変換する方法
trunc()
- 部分配列を高速に参照する方法
@views
- ショートサーキット
&&
、||
欲しい機能がない場合は?
記事にまとめるほどではないため、別途公開はしていませんが、以下のリストから欲しいものを見つけられるかもしれません。
- コミュニティ
- 生エビ寿司店コミュニティ 💬:国内唯一の日本語Juliaコミュニティです。
- 実戦Julia入門:Juliaの基礎を学べるいくつかの問題を紹介しています。
- 実戦Julia入門 練習問題
- 実戦Julia応用課程:パッケージについて学びます。
- 教科書
- First Semester in Numerical Analysis with Julia:数値解析の基礎的な内容とそれをJuliaで実装する内容が含まれています。リンクからPDFファイルをダウンロードできます。
- Julia Data Science:2021年11月に公開されたオンライン書籍です。英語、ポルトガル語、中国語をサポートしています。
DataFrames.jl
と可視化パッケージのMakie.jl
を主に扱います。リンクからPDFファイルをダウンロードできます。 - Algorithm for Optimization:最適化問題を解くさまざまな方法とそれをJuliaで実装する内容を含みます。リンクから原書をオリジナルまたは章ごとのPDFファイルをダウンロードできます。日本では『実用最適化アルゴリズム(Juliaで理解する最適化アルゴリズムソリューション)』というタイトルで翻訳書が出版されています。
- パッケージ
- JuliaDB.jl:データ処理ライブラリで、高速な速度とメモリ管理を強みとしています。
- Metatheory.jl:メタプログラミングとシンボリック演算のためのライブラリです。
- Cairo.jl:強力な画像作成機能を提供するパッケージです。一般的な可視化とは異なる軌道をたどります。
- その他
- プロファイラー:MATLABのようにプロファイリングを通じてパフォーマンスを表示します。
- The Fast Track to Julia:Juliaで使用される文法を簡単にまとめた表です。
- Julia?:個人が運営するブログのようですが、Juliaを使用する高度なヒントを多く共有してくださる方です。
全體ポスト
- ジュリアカラースキームで0から1の間の値で色を得る方法
- ジュリアで軸に円周率の記号を使用する方法
- Juliaでの横軸と縦軸の入れ替え方
- ジュリアでオペレーティングシステムを確認する方法
- ジュリアでのNaNの比較
- ジュリアにおけるベクトルとタプルの違い
- Juliaで配列を列ごとに計算する方法
- ジュリアでコンプリヘンションを理解する方法
- ジュリアで配列の型を指定して定義する方法
- ジュリアのNamedArrays.jlパッケージ
- ジュリアでディクショナリを使って複数のキーワード引数を一度に渡す方法
- ジュリアプログラミング言語
- 줄리아의 타입과 애노테이션
- Juliaでパッケージをインストールして使用する方法
- ジュリアで配列を平行移動する方法
- ジュリアでベクターを生成する様々な方法
- ジュリアにおける配列のスライシングとインデックス化
- ジュリアでの集合データ型と演算子
- ジュリアで配列をヒートマップ画像として出力保存する方法
- ジュリアでの2次元配列操作の関数들
- ジュリアで画像配列を回転する方法
- ジュリアで画像サイズを変更する方法
- ジュリアで画像を読み込み、行列として保存する方法
- ジュリアでのラムダ式
- ジュリアでパイプオペレータを使用する方法
- ジュリアの強力な便利機能、マクロ
- ジュリアでの並列処理の方法
- LinuxでJuliaの最新バージョンをインストールする方法
- ジュリアで空の配列を作成する方法
- ジュリアで距離行列を計算する方法
- ジュリアでGIFを作る方法
- ジュリアで合成関数を使用する方法
- Linux上のJuliaでの並列計算に使用するスレッド数の変更方法
- ジュリアで実行されるコードファイルの位置を確認する方法
- WindowsでJuliaの並列計算に使用するスレッド数を変更する方法
- ジュリアで *.csvファイルを読み込む方法
- ジュリアでのデータフレームと2次元配列間の変換方法
- ジュリアで16進数RGBコード(HEX)を使用する方法
- WindowsでJuliaの最新バージョンをインストールする方法
- Juliaパッケージのインストール時に\General\Registry.toml: No such file or directoryというエラーを解決
- ジュリアでの文字と整数の等価オペレータ==の速度比較
- ジュリアで重み付けとランダムサンプリングをする方法
- ジュリアで距離行列計算を最適化する方法
- ジュリアで配列をフラット化する方法
- ジュリアのメタプログラミング
- WindowsのCMDとPowerShellでJuliaを使用する方法
- ジュリアで変数の値を便利に出力する方法、補間
- ジュリア変数名にグリーク文字と添え字を書く方法
- ジュリアで2次元配列をCSVファイルに出力する方法
- JuliaでNearstNeighbors.jlを使用して距離を素早く計算する方法
- ジュリアでデータフレームの列名を変更する方法
- ジュリアで小数点以下を切り捨てて整数に変換する方法
- ジュリアでSHPファイルを読む方法
- ジュリアで特定の値で埋めた配列を作る方法
- ジュリアでの微分の求め方
- ジュリアで構造体の属性を確認する方法
- ジュリアでzfill()を使う方法
- ジュリアでヒートマップの色範囲を指定する方法
- ジュリアで小数点以下特定の桁で丸める方法
- ジュリアでfile.choose()のようにダイアログボックスを開いてファイルを選択する方法
- ジュリアでビット配列を反転させる方法
- ジュリアにおける==と===の違い
- ジュリアでの曲線から特定の値まで/二つの曲線の間/閉曲線の内部の塗り方
- ジュリアでグラフィックスの背景を透明にする方法
- ジュリアで異なるサイズのベクトル成分ごとに操作する方法
- ジュリアでプロットにTeXを使用する方法
- ジュリアでヒートマップにプロットを重ねて描く方法
- ジュリアでnpyファイルを読み込む方法
- ジュリアパッケージ管理モードで使用可能なコマンドのリスト
- ジュリアでエレガントなループを使用する方法
- ジュリアにおいて多次元配列を直接定義する方法
- ジュリアで配列の要素がリストに属しているかを確認する方法
- ジュリアでのシンボル
- ジュリアのループでインデックスと値の両方を参照する方法
- ジュリアで.matのようにデータを保存する方法
- ジュリアから:辞書とペア
- ジュリアで近似値をチェックする方法
- PythonのようにJuliaで文字列を扱う方法
- ジュリアプロットに韓国語テキストを挿入する方法
- ジュリアプロットにテキストを挿入する方法
- ジュリアプロットで特定のデータラベルを隠す方法
- ジュリアで文字列を結合する方法
- ジュリアで多項式を使用する方法
- ジュリアでの因数分解および素数関数の使用方法
- Juliaで特定の文字列を含むかどうかを確認する方法
- ジュリアでデンドログラムを描く方法
- ジュリア文字列で特定のパターン位置を見つける方法
- ジュリアで階層的クラスタリングを行う方法
- Juliaで空のデータフレームを作成する方法
- ジュリアで特定バージョンのパッケージをインストールする方法
- ジュリアで無限大を使う方法
- ジュリアでデータフレームに新しい行を挿入する方法
- Juliaでデータフレームを並べ替える方法
- ジュリア集合の画像に線を挿入する方法
- ジュリアでデータフレームに新しい列を追加する方法
- - ジュリアでのテキスト出力装飾パッケージ
- ジュリアでCSV出力時の文字化け解決方法
- ジュリア集合の絵のアスペクト比を調整する方法
- ジュリアで図の凡例の位置を調整する方法
- ジュリアでレイアウトを使ってサブプロットを描く方法
- JuliaでDataFrameの重複した行を削除する方法
- ジュリアでデータフレームをグループ分けして計算する方法
- ジュリアでアートスタイルを作る方法
- ジュリアで図に垂直線と水平線を挿入する方法
- ジュリアでデータフレームの特定の行を削除する方法
- ジュリアプロットの基本設定を変更する方法
- ジュリアのコンテナ内部の要素タイプをチェックする方法
- ジュリアで可変引数関数を定義する方法
- ジュリアで文字列を数値に変換する方法
- Juliaで外部プログラムを実行する方法
- ジュリアでのシンボリック演算の方法
- ジュリアでコマンドライン引数を挿入する方法
- ジュリア、Python(NumPy、PyTorch)の配列の次元の違い
- ジュリアのネームドタプル
- ジュリアで変数名をカラム名として持つデータフレームを作成する方法
- ジュリアでデータフレームのサイズを確認する方法
- ジュリアで例外処理する方法
- ジュリアで配列が空かどうかを確認する方法
- ジュリアでパッケージバージョンを確認する方法
- ジュリアでRで使用されていた組み込みデータセットを読み込む方法
- ジュリアのカテゴリカル配列
- ジュリアでデータフレームの要約を見る方法
- JuliaでCSVファイルから列だけを読み込む方法
- ジュリアで周波数を計算する方法
- ジュリアでのデータフレーム特定値の変更方法
- ジュリアの三項演算子 ? :
- JuliaのデータフレームでNaNを0に置き換える方法
- ジュリアで条件文を簡潔に書く方法
- ジュリアプロットにおける軸のスタイルの変更方法 `framestyle`e`
- ジュリアで複素数を使用する方法
- ジュリアで配列から辞書を作成する方法
- ジュリアのブロードキャスティング文法
- ジュリアで部分配列を迅速に参照する方法
- ジュリアの感嘆符の規約
- ジュリアのfind関数들
- ジュリアのショートサーキット
- ジュリアの多次元インデックス
- ジュリアでの分散コンピューティングの方法
- ジュリアで基本データ型を変更する方法
- ジュリアで高速フーリエ変換(FFT)を使用する方法
- ジュリアでの日付と時刻関連関数の使用方法
- ジュリアで線形代数パッケージを使用する方法
- ジュリアでデータを省略せずに出力する方法
- ジュリアでランダムに抽出する方法
- ジュリアで与えられた分布からランダムにサンプリングする方法
- ジュリアでネイバーからメールを送る方法
- ジュリアで2次元配列と行列の間の変換方法
- Julia Plotsで軸、軸名、目盛り、目盛り値の色を指定する方法
- ジュリアで2つの時刻の差を秒単位で計算する方法
- ジュリアにおける多変数関数のブロードキャス팅
- ジュリアでメッシュグリッドを作成する方法
- ジュリアで軸、目盛りなどをすべて無くしてきれいに出力する方法
- ジュリアで回帰分析を行う方法
- ジュリアで0または欠損値を除外した平均値の計算方法
- ジュリアでプログレスバーの使い方
- ジュリアで環境変数を参照する方法
- ジュリアでデータフレームの欠損値を削除する方法
- ジュリアでコンソールを初期化する方法
- ジュリアコンソールでシンプルなグラフィックを出力する方法
- ジュリアでmatファイルを読み書きする方法
- ジュリアで無限配列を使用する方法
- ジュリアでボックスプロットを描く方法
- ジュリアでランダムシードを固定する方法
- ジュリアで3Dプロットのカメラ位置を調整する方法
- ジュリアでグラフィックスに矢印を描く方法
- ジュリアで画像のサイズと解像度を調整する方法
- ジュリア集合でマーカーに色をつける方法
- ジュリアでk-平均群集化する方法
- ジュリアで他のファイルに定義された関数の使用方法
- Julia StatsPlotsでデータフレーム名を省略するマクロ@df
- ジュリアでユニコード文字列の一部だけをスライスする方法
- ジュリアのスプラットオペレータ
- Juliaスプラットオペレーターを通じたオプション引数の渡し方のヒント
- ジュリアでゼロ除算したときのInfとNaNの違い
- ジュリアプロットで回帰直線を描く方法
- ジュリアでのマーカーとラインスタイルのリスト
- ジュリアで円形配列を使う方法
- ジュリアで配列の差分を計算する方法
- ジュリアでの数値解析的補間
- ジュリアでテキスト出力を装飾する組み込み関数
- ジュリアで有限差分を使用する方法
- ジュリアプロットでの色の使用方法
- ジュリアのカラー処理のためのパッケージ
- ジュリアプロットで軸の値を削除する方法
- ジュリアでRGBカラーコードを使用する方法
- ジュリアプロットでグラフ要素の色を指定する方法
- Juliaのサブプロットにメインタイトルを追加する方法
- Julia Plotsで各サブプロットごとにグラフの色を指定する方法
- ジュリア・プロットで背景色を指定する方法
- ジュリアでString7, String15なしでデータフレームを呼び出す方法
- ジュリアプロットで背景のグリッドを飾る方法
- ジュリアプロッツでのプロットのプロパティリスト
- ジュリアプロットで異なるスケールの2つのデータ軸を共有して描く方法
- ジュリアプロットでパレットを使用する方法
- ジュリアプロットでカラーグラデーションを使用する方法
- ジュリアで行ごと、列ごとにスカラー倍する方法
- ジュリアで列ごとに行列を正規化する方法
- ジュリアからRへのパッケージのインポート方法
- ジュリアで配列の特定の位置を関数で参照する方法
- ジュリアでベクトル場を描く方法
- ジュリアで関数として構造体のプロパティを参照する方法
- ジュリアの自動微分パッケージZygote.jl
- ジュリアでクラスタリングパッケージを使用する方法
- ジュリアでコレクションの重複を削除する方法
- ジュリアで決定木を使う方法
- Julia vscodeでデータフレームを綺麗に見る方法
- Juliaで単一要素セットの唯一の要素にアクセスする関数 only
- ジュリアの整列順列関数とその応用 sortperm
- Juliaでコードの性能を評価、ベンチマークする方法
- ジュリアでクリップボードを使用する方法
- ジュリアで画像を垂直および水平に反転させる方法
- ジュリアのシンボリック演算パッケージSymbolics.jlの紹介
- ジュリア自然言語処理パッケージTextAnalysis.jlの紹介