isatoの活動日記

管理人isatoが毎日の生活で気になったこと、勉強になったことを書いています。

Python3 モジュール化 (相対パスに注意)

pythonに関わらず、アプリを開発しているときに独自のモジュールを作ることはよくあると思います。 そこで注意するべき点について紹介します。 ファイル構造をこのようにします。 work/ |--mymodule.py `--call.py 各ファイルを次のように編集します。 def g…

オイラーの素数生成多項式の約数

オイラーの素数生成多項式 の約数について考えてみます。 愚直に に自然数を代入していき,約数を調べてみました。 すると,面白いことがわかります。 という形で書ける数が順番に出てくるのです。 しかし,全てではありません。 のとき, となり, とはとい…

【数学用語】単数

最近,数論を独学で勉強していますが,用語が難しいですね。 少しづつ理解していきたいと思います。 数学用語の単数とは,実数の世界におけるのことのようです。 つまり,単数は乗算しても被乗算数の大きさを変化させない数と言えると思います。 代数的整数…

ペル方程式

x2-dy2=1 という形で書ける方程式をペル方程式と呼びます。 (x,y) = (1,0)は自明な解となっていますが,ペル方程式には非自明な解が存在することが保証されています。 この方程式の一つの解を見つけたとしましょう。 ここで, という数を考えます。 この数を…

平方根は3つで1セット??

平方根について気になり色々調べていたところ,以下のような事実に気づきました。 この数式は,「三つの平方根の和が調和のとれた美しい形で表現される」ということを表しています。 また,Aのべき数として現れる数列は,リヒテンベルグ数列と呼ばれているよ…

python3 文字列操作:分割

python3での文字列の分割にはsplit関数を使います。 使い方は以下の通りです。 string = "abc.def.ghi" splist = string.split(".") print(splist) # => ['abc', 'def', 'ghi'] split関数の引数に分割文字を指定することで、文字列を分割することができます。…

python3 アノテーションについて

アノテーションとは要は注釈のことです。 コメントでつけてもいいんですが、関数の引数と戻り値に関しては正式な書き方があるので、そちらを使ったほうが良いでしょう。 以下のように使います。 def multi(x :int , y :int) -> str: return f'{x*y}' このよ…

虚二次体とオイラーの素数生成多項式

オイラーの素数生成多項式の不思議について以前の記事で紹介しましたが、少し研究されていて、ある性質が見つかっていたようです。 以下のページで紹介されています。 tsujimotter.hatenablog.com めちゃくちゃ面白いと思いました。 でも、整数論が難しくて…

python3 enumerateについて

pythonではリストの要素と要素番号を同時に取得することができます。 以下のようにします。 list = ['a', 'b', 'c'] for i, cont in enumerate(list): print(f'{i} : {cont}') # => 0 : a 1 : b 2 : c enumerateを使わなくても実現できますが、使った方がス…

python3 アンパックについて

皆さんアンパックってご存知ですか。僕は最近知りました。 アンパックとはリストや辞書を展開して、中身を取り出すことです。 アンパックによって以下のようなことができます。 *によるリストのアンパック def myprint(a, b, c): print(f'a={a} b={b} c={c}'…

効率的にプログラムを書くための思考

最近どうやったらもっと効率よくプログラムが書けるかを考えていました。ここで言う「効率がよい」とは、問題を解こうとしてから解くまでにかかる時間についてです。 結論から言いますと、「解きたい問題を、自分の能力で解ける問題に素早く分解すること」が…

強化学習の行動価値関数について

強化学習ではある状態に対してどのような行動をとれば、その後に得られる総報酬が最大化されるかを学習していきます。 強化学習ではこの指標を「行動価値」とよび、「行動価値関数」というもので表現しています。 行動価値関数の理想的な定義は、状態と行動…

python3 pickleで簡易データベース

プログラム内で使った変数などの各種情報を一旦外部に保存しておきたいことってありますよね。 MySQLなどしっかりしたデータベースが使えればいいんですけど、SQL文を覚えたりしないといけないので割と敷居が高いです。 そこで、MySQLを使わずに簡易的にデー…

オイラー素数が楕円の格子点と関係していた件

オイラー素数とはオイラーの素数生成式で表される素数のことです。 この式が非常の多くの素数を生成することは以前の記事で紹介しました。単純な二次多項式がこのような振る舞いをするのには, 何か理由があるはずだと考えられていますが, 今のところよくわか…

python3 文字列内の変数展開

文字列内に変数の値を組み込みたいことってよくありますよね。 そんなときに使える方法4つをまとめます。 1.f-stringsを使う name = "isato" age = 23 print(f"私は{name}です。{age}歳です。") # => 私はisatoです。23歳です。 2.str.format()を使う name…

ウラムの螺旋の三次元拡張

YouTubeに公開しています。 ウラムの螺旋を三次元拡張してみた https://youtu.be/ompnziJsbcM 通常版のウラムの螺旋では、正方形から次に大きい正方形を作るように軌跡を描いていきました。 この考えを拡張して、立方体から次に大きい立方体を作るように軌跡…

vim ある行で任意の文字に飛ぶ

vimでのカーソル移動は慣れないと使いづらいですよね。上下左右が k j h lに対応してますが、これはバンバン使って慣れていくしかないでしょう。 で、今回はある行で任意の文字に飛びたいときに使うコマンド f についてです。 例えば以下の文で、カーソルが…

python 辞書型とタプル型を用いた2次元データ

タイトルを見られた方は、なんでそんなややこしいことするの?って思われたかもしれません。確かに用途によっては、他の作り方でも十分です。 タイトルのようにするメリットは、領域が確保されていないときでも要素を指定できることです。 詳しく説明します…

python import (上階層にモジュールがあるとき)

pythonのimportの使い方の続きです。 読み込みたいモジュールがメインファイルより上の階層にある場合の読み込み方についてまとめます。 例では以下のようなファイルの配置にします。 module.py file(ディレクトリ) ーmain.py main.pyでmodule.pyを呼び出す…

pythonのimportの書き方

pythonでの外部ファイルの読み込みについてまとめます。オブジェクト指向の醍醐味ですね。 ・同階層 同じディレクトリ内に module.py main.py があるとき、main.py内で以下のように書けばmodule.pyを読み込むことができます。 import module 使うとき : modu…

ウラムの螺旋について

この図をウラムの螺旋と言います。 ウラムという数学者が退屈な会議中に、数字を書いて遊んでいたところ偶然発見されたそうです。 ウラムの螺旋の書き方 このように1を真ん中にして螺旋を描いていきます。そして、素数に色をつけると最初の画像のようになり…

pythonのファイル出力いろいろ

pythonのファイル出力のやり方は一通りではありません。 今回は使いやすい2パターンのやり方についてまとめます。 パターン1 withを使う。 with open(‘ファイル名',’w’) as f: f.write(‘書き込む文字列’) この書き方では、wをrにすることでファイル入力も可…

vimでの複数行インデント

コードを書いていて、後から一部を関数化したいときとかに複数行インデントしたくなることはよくありますね。 ということでvimでの複数行インデントについてまとめておきます。 1.コマンドモードで shift + v を押し、ラインビジュアルモードへ 2.インデン…

オイラーの素数生成式

っていうなんの変哲もない二次多項式なんですが、xに自然数を代入していくと信じられない確率で素数となります。 オイラーさんが見つけたのでオイラーの素数生成式という名前がついています。 41という定数項を(3,5,11,17)に変えても同様の性質があることが…

深層強化学習の勉強1

深層強化学習とは、深層学習と強化学習を組み合わせた機械学習法です。 深層学習は結構知られていて、ディープニューラルネットワークを使って学習していく学習手法ですね。 強化学習とは、以下のような図でエージェントと環境が状態、行動、報酬の三つの要…

プログラミング言語の丸め誤差ってやつ

最近、pythonで数値計算することがあったんですけど、どうも結果がおかしい。 この値は何になりますか?? 簡単ですね。 3です。 実際にpythonで計算してみましょう。 ??? 3にならない・・・。 理由は簡単です。 って感じで計算するからですね~。 これは…