もう,Python なんて,いらね〜〜〜〜〜じゃない?
ここ数年?
満月のたびに,「今日は〇〇ムーン」とかネットで書かれてですね。
なんだそれ。
「アメリカインディアンはこの満月を〇〇と呼んでいました」
はあ,そうですか。私,日本人ですけど何か?
流星群とか,満月とか,一般人(失礼します)にアピールするのも良いのだけど。
例えば,流星群。期待するほどのものじゃないですよ。(まあ,「今まで,流れ星を見たことないんです❤」なんて人は別格なんですが。別格なら別格で,「なんだ,期待はずれじゃんプンプン」てこともあるので)
程々にしてほしいものです。
なお,夢を壊すかもしれないけど,散在流星というのもありましてですね,季節も時間も問わず,一時間に1つ流れるかどうかという流星もあるんです。これこそ,みられたら「幸せになれるかもれない」。流れ星が消えるまでに何回願い事を言えばいいのか?なんてこともない。それこそ,「まれなこと」なんだから。
夢が叶うかどうかと言うなら,流星群ではなく散在流星のほうがご利益ありそうですよね。
心を無にして,夜空を眺めましょう。
流れ星がみられなくても,あなたが見つめた煌めく星星は,あなたに流れ星以上のすばらしい何かを伝えてくれたのではないでしょうか
みんな大好き,Julia の速度自慢
https://blog.goo.ne.jp/r-de-r/e/35653aa771bcd15136f14dae7969e593
では触れなかったが,
みんな大好き,R と Python の速度比較
https://blog.goo.ne.jp/r-de-r/e/9d0ef78b17007c6de642983c368aaf20
で,R でのケンドールの順位相関係数の計算が遅すぎると書いた。
これを解決できるパッケージを見つけたので報告する。
実験環境
macOS Monterey バージョン 12.1
Mac mini (M1, 2020)
チップ Apple M1
メモリ 8GB
R M1 チップ対応
version 4.2.0
platform aarch64-apple-darwin21.1.0
arch aarch64
os darwin21.1.0
system aarch64, darwin21.1.0
Python M1 チップ対応
Python 3.10.0
Julia M1 チップ対応
Version 1.7.0 (2021-11-30)
テストに使用するデータ
R で作った,10万件1500変数のデータフレームを csv ファイルとして保存。
これを各プログラムでデータフレームとして入力して各種関数の実行速度を測定する。
n = 100000
m = 1500
x = data.frame(round(matrix(rnorm(n*m, 50, 10), n, m), 2))
write.csv(x, file="test.csv", row.names=FALSE)
df = read.csv("test.csv", colClasses="numeric")})
まずは,R
> system.time({rk = cor(df[1:5], method="kendall")})
user system elapsed
327.977 0.465 328.402
探索していて見つけたライブラリ
https://rdrr.io/cran/pcaPP/man/cor.fk.html
library(pcaPP)
> system.time({fk = cor.fk(df[1:5])})
user system elapsed
0.106 0.002 0.109
cor() より 3000倍速い。
> system.time({fk = cor.fk(df[1:50])})
user system elapsed
10.330 0.262 10.560
次いで, Python
>>> start = time(); rk = df.iloc[:, 0:5].corr(method='kendall'); print(time() - start)
0.2503321170806885
cor.fk より 2 倍以上遅い。
>>> start = time(); rk = df.iloc[:, 0:50].corr(method='kendall'); print(time() - start)
26.7141010761261
最後に,Julia
@time rk = corkendall(Matrix(df[:, 1:5])) # 0.134137 seconds
@time rk = corkendall(Matrix(df[:, 1:50])) # 11.786005 seconds;
cor.fk() より若干遅いが,Python に比べて 2倍以上速い。