技術メモ

役に立てる技術的な何か、時々自分用の覚書。幅広く色々なことに興味があります。

Python

Flaskを使ったOAuth2.0のクライアント側の実装

手を動かしてOAuthを理解したかったので、お試しクライアントアプリを書いてみた時の備忘録。 Flaskで実装されている例が見当たらなかったのでちょうどよいと思って試してみた。 (python3.10.9) OAuth2.0とは OAuthとは一言で言えば、利用者に外部のサービス…

エクセルで編集したデータをそれぞれのシート名でCSVに変換する【python】

動作確認環境 python3.6.1 pandasが必要。必要に応じて以下コマンドでインストールする。 pip install pandas コード import pandas as pd import sys def excel_to_csv(filename, target_sheet_index = None, target_folder = "./"): ''' エクセルで編集し…

Pythonで月ごとの営業日数を求める

月ごとの営業日数を求めたい事があったので、pythonで簡単にやってみた。 祝日計算 祝日計算には内閣府のcsvファイルを取ってくる方法を見つけた*1が、これだと振替休日などに対応できない。 そこで、こちらで紹介されているjpholidayを使った。 github.com …

jupyterでtornadoがないと言われた時のメモ

新しいパッケージをインストールした後、いつものように jupyter lab とjupyterを立ち上げようとしたところ $ jupyter lab Traceback (most recent call last): File "c:\tools\anaconda3\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_…

3次スプライン補間を実装する

3次スプライン補間 補間とは? 補間とは、点群に対してその点群を通る連続な関数を当てはめること。 もっとも単純なものは線形補間で、いわゆる折れ線グラフのようなもの。 特に3次スプライン補間とは点群間を3次多項式で表し2階微分まで連続にするような補…

pythonで為替データを取ってきて移動平均、ボリンジャーバンド、ゴールデンクロス、デッドクロスを可視化

pythonで為替データを分析したり可視化してみたいと考えた。 今回は、リアルタイムでドル円相場を取ってきてローソク足をプロットし、その上に移動平均,ボラティリティ,ゴールデンクロス,デッドクロスを可視化してみるというところまでやってみる。 デー…

pythonでコードを書きながら楕円曲線暗号を理解する

仮想通貨についての勉強 楕円曲線暗号とは、ビットコインのデジタル署名で使われてる公開鍵暗号方式。この記事にあるコードを写経しながら勉強する。 自分自身まだ深く理解してないところがあるので解説は別の機会に書くことにしてメモ書き程度にとどめてお…

pythonでコードを書きながらデジタル署名を理解する

仮想通貨の仕組みについての勉強の続き。 仮想通貨にはなくてはならないデジタル署名を実装して勉強した。 デジタル署名自体は目新しいものではなく昔からある技術で、今でもネット決済など広く使われている。 デジタル署名とは ザックリとした説明 デジタル…

pythonでコードを書きながらブロックチェーンを理解する

いまや知らない人はいない仮想通貨、別名暗号通貨(cryptocurrency)。 ドル円とは比べ物にならないほどの殺人的なボラティリティを見せているけれど、しばらくすれば落ち着いてくるんだろうか。 はっきりいって今の相場と税率でレバレッジ15倍とか正気の沙汰…

GCD, LCM with Python3

自分用のメモ Python3で最小公倍数(GCD)、最大公約数(LCM)を求める from functools import reduce def gcd(*numbers): def gcd(a, b): while b != 0: a, b = b, a % b return a return reduce(gcd, numbers) def lcm(*numbers): def lcm(a, b): return (a * …

nCk (mod m) の求め方 [n,kが凄く大きい場合]

大きいnに対してコンビネーションを求める 凄く大きいnに対してCombinationを求める時、例えばを求めようと思っても愚直に計算するにはプログラムで扱える桁数を超えてしまう。 そこで、mで割った余り(modular) を求めさせることがある。pythonで書いたので…

Nが現れる素数(N=1,2,3,4)

2が現れる素数という面白い素数が紹介されていた。 2が現れる素数 - INTEGERS昔せっかく高速素数判定器を作ったので、どうせならNが現れる素数を見つけてやろう!と思い立った。 プログラム (※プログラムはpython(2.7.12)で動作します)ルールとしては ①四…

2次元配列の特定の条件を満たす要素の中からランダムに選択【numpy】

「0~1の値を取る2次元配列があって、0.7以上の要素を持つインデックスの中からランダムにインデックスを取ってくる。」 こんなことをしたい時にnumpyを駆使すれば綺麗に書けたのでメモしておく。 例えばこんな配列(numpyのarray)があったとする import numpy…

slackbotでbotに投げられた画像をダウンロードする

slackbotでシステムを作ろうとした時に、botに投げた画像をいったん保存する方法がわからなかったので、記録しておく。 slackbot自体の始め方 slackbot自体の使い方は他のブログなどで詳しく紹介されているのでそちらを参考にしてほしい。 インストールはこ…

pythonで一元配置分散分析(one way ANOVA)

一元配置分散分析とは 「3つ以上の群があった時に、果たしてそれらの群の平均は等しいと言えるかどうか。」 という検定。 集団の分布が正規性を持つことが前提となっている。*1 ※すべての組み合わせペアでt検定を適用するのは間違いなので注意*2基本的な発想…

リスト内を検索して該当するインデックスを全て返す (python)

a = [1,2,3,2,3,4,5,4,3,2,1] こんなデータがあった時、3がある場所を取ってきたいとする。 a.index(3) # 2 とすると最初のインデックスだけが返ってくる。 希望は全てを取ってくることなので、これではダメ。 じゃあどうするか。 index = [] for i,j in enu…

pandasで重複数をカウントする

pandasで重複数をカウントしたい時、 例えばこんなデータがあったとする。 import pandas as pd df = pd.DataFrame([['AA',100],['AA',200],['AA',200], ['BB',100],['BB',200]],columns=['x','y']) #--------------- # x y # 0 AA 100 # 1 AA 200 # 2 AA 20…

pythonでgraphvizの使い方(美しいツリー構造や状態遷移図の描画)

pythonで美しいグラフ構造を書くためのツール。pythonでグラフ構造を書くといえば、今有名なのはnetworkxだろう。 でもnetworkxは描画には特化していない。どちらかというと分析に使うツールだ。 特に、状態遷移図や木構造を書くのには向いていない。 そこで…

pythonを使ってFitzHugh南雲方程式のnullclineを描く

pythonでヌルクラインを描く方法 いくつか方法があるようだけど、matplotlibとscipyを組み合わせる方法が良さそうだった。 FitzHugh南雲方程式 FitzHugh南雲方程式とは、一言でいうと神経細胞(ニューロン)の挙動を数理的に表した方程式のこと。ニューロン…

三目並べの全ての状態数とその遷移関係を数え上げるアルゴリズム

三目並べでとりうる盤面の状態数を数えてみた。 英語ではTicTacToeと言ってボードゲームAIの入門によく使われる題材だったりする。 ゲームの状態数はよく9マス×3状態で通りだとか最初は9通りで次の番は8通り…だから通りだとか言われるけれどどれも厳密な答え…

粘菌に迷路を解かせるシミュレーション

粘菌は凄い!なぜかって、脳がないのに餌までの最短経路を見つけることができる。 これが神経細胞の始まりだとか言われていたり言われていなかったりする 以前から知ってはいたが、調べているとニコ動でこんな動画があった。ちゃんとできている!しかもエク…

仮想環境の中でIPythonを使う方法 (virtualenv + ipython)

仮想環境下で pip install ipython ipythonとしても、デフォルトモードのipythonが立ち上がってしまう。 例えば、2系を標準に入れている端末で3系の仮想環境を作った時なんかは困ってしまう。簡単な解決法があったので紹介する。エイリアスにこれを登録して…

pythonで符号検定、ウィルコクソンの符号付き順位検定

符号検定 符号検定とは、勝ち負けなど〇×の判定で2つの群の優劣を判定する検定のこと。 「将棋ソフト同士を対決させて、試合の勝敗だけでソフトの強さを比較したい」等に使える。scipyを使う from scipy import stats stats.binom_test(x, n=None, p=0.5, al…

Extream Learning Machineの簡単実装

あまり知られていないかも知れないが、Extream Learning Machineというニューラルネットの一種がある。 3層のニューラルネットなんだけど、通常のニューラルネットと違い、学習は出力層と中間層の重回帰で学習する。通常のようなバックプロパゲーションのよ…

最強の素数チェッカーを作ってみた

前回の記事の最後に書いた、決定的な素数判定と確率的な素数判定をハイブリッドにしたら最強なんじゃないかという考えのもと、最強の素数判定器を作ってみた。 特にひねりはないが、最初に3桁まで(引数で指定可能)の素数リストを作っておいて、確率的な素数…

確率的素数判定法 vs. エラトステネスの篩

素数判定をするのは暗号の分野ではすごく重要なんだけど、そこでよく使われるのが確率的素数判定法というもの。 競技プログラミングの問題に出てくる程度の素数判定では、エラトステネスの篩と呼ばれる有名な素数判定アルゴリズムで充分なのだけど、暗号に使…

word2vecで「単語の足し算引き算」をしてみる

word2vecを試してみたいけど使ったことがないという人が対象 とりあえず動かしてみるのが目的。 ※python2.7.12で動かしているけど、3系でも大丈夫なはず。 word2vecとは word2vecとは、ざっくり言えば 「単語をベクトル表現にでき、意味の足し算や引き算がで…

pythonの仮想環境に関する話

pythonのvirtualenvで仮想環境の作成について。windows版 どうして仮想環境を使うのか チームで開発する時など、環境を統一する必要がある。 ネットで公開する時は、ゼロから環境構築を再現して試してみたい時がある。 仮想環境ではライブラリは何もないので…

カオス理論入門(pythonでアトラクタの軌跡を描く)

カオスについて勉強していた時に書いて見たかったもの。アトラクターの軌道を見てみたい。 目標としては3次元プロットして一定軌道をグルグル回っているところをプロットしてみる。有名なレスラーアトラクターとローレンツアトラクターを描いていきたい。 実…

pythonでたまに使う用法(リスト・内包表記・三項演算子・lambda…)

pythonのちょっと特殊だけどたまに使う記法について備忘録。 ※2.7系で動かしているので3系では動かないかもしれない。要調査。 リスト操作 リストの重複削除 a = [1,1,4,4,3,3,2,2,5,5] list(set(a)) # >>[1,2,3,4,5] ※この書き方だと順序は保持されない順序…