- 1. 第3回アルゴリズム実技検定(PAST)解説(Python)
- 2. Pythonの同じライブラリの複数versionを使いたい時(venvを使った仮想環境)
- 3. ゼロから始めるLeetCode Day49 「1323. Maximum 69 Number」
- 4. ボルダリング(Moon Board)の課題をA*で解く
- 5. ポケモン剣盾のランクバトルのバトルデータをMetabaseで可視化する。
- 6. AtCoder勉強メモ
- 7. CSVファイルの読み込み:pandas
- 8. Dockerを使ってAnaconda環境を作ってみた!
- 9. James-Stein推定量を解説してみた
- 10. 製薬企業研究者がPythonを用いたデータベース操作についてまとめてみた
- 11. Colab Proを日本から登録する
- 12. Pythonでbitbucketのレポジトリ一覧を取得する
- 13. VSCode にPython仮想環境を追加する
- 14. Saliency Mapを使って有名な絵画を分析してみる
- 15. Python3 エンジニア認定基礎試験 取得についての備忘録
- 16. [python] 配列スライス操作
- 17. ゼロから始めるLeetCode Day48 「26. Remove Duplicates from Sorted Array」
- 18. 【Python】ローカルPC上のファイルを外付けSSDに自動でカット&ペーストするスクリプトを作ってみた
- 19. 貪欲法を学ぶ
- 20. PythTBことはじめ
第3回アルゴリズム実技検定(PAST)解説(Python)
Pythonでとく[第3回アルゴリズム実技検定](https://atcoder.jp/contests/past202005-open)
## アルゴリズム実技検定とは
アルゴリズム実技検定はAtCoder社が提供している競技プログラミング(アルゴリズム力)の試験。PASTはPractical Algorithm Skill Testの略。googleabilityが少し悪いですね。通常は一般で8800円/人(税込)かかるが第3回は無料。通常のAtCoderのレーティングは相対評価の色表示だが、PASTでは絶対評価で5段階。全15問5時間なので1問あたり20分。
## 競プロ大前提復習
1GHzのCPUなら1s間にループをざっくり10^9回実行可能。実行の制限時間はものによるが2s程度。PythonはC++などと比べて速度が1/10程度、簡単なループなら最適化でもう少しはやく実行されるが、いずれにせよ10^10を越えると時間内に終わらない。## A – ケース・センシティブ
小文字での比較. 3文字x2で一瞬なので計算量とか関係ないですね。“`python
#!/b
Pythonの同じライブラリの複数versionを使いたい時(venvを使った仮想環境)
# なぜ仮想環境が必要なのか?
Pythonでは、1つの環境に同じライブラリの複数バージョンをインストールできないため、1つのバージョン飲みになってします。
例えば、ライブラリ1を使うプログラムAとライブラリ2を使うプログラムBがあるとします。この時、プログラムAかBは動かなくなってしまいます。# Pythonで仮想環境を使うには
vencという標準モジュールを使うと仮想環境を作るkとができます。## 仮想環境の使い方
macOSの場合“`bash
$ python3 -m venv 環境名
“`
をすると、カレントディレクトリに環境名のディレクトリが作成されます。ディレクトリの名前は自由に設定できる### 仮想環境を有効
activateスクリプトを実行する“`bash
$. 環境名/bin/activate
“`### 仮想環境を無効
“`bash
(環境名)$ deactivate
“`仮想環境自体が不要になった場合はディレクトリを丸ごと削除する
ゼロから始めるLeetCode Day49 「1323. Maximum 69 Number」
#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetCode Day48 「26. Remove Duplicates from Sorted Array」](https://qiita.com/KueharX/items/f234d8beab96328a171a)今はTop 100 Liked Que
ボルダリング(Moon Board)の課題をA*で解く
# 概要
この記事は、スポーツクライミングのボルダリングのルートをCGの人間が登る研究のコース探索アルゴリズムをMoon Board用に再実装した記録です。
現状、クライミングにおいてはMoon Boardの課題が最も機械学習に向いていると思いますので、興味のある方のお役に少しでも立てますと幸いです。##### 元の論文(私は論文の著者とは何の関係もないです)
https://dl.acm.org/doi/10.1145/3072959.3073707A*を実装する際に参考させていただきました
##### よくわかるA*(A-star)アルゴリズム (Unity2Dのサンプルコードつき)
https://qiita.com/2dgames_jp/items/f29e915357c1decbc4b7環境
OS X: 10.15.1
Python 3.7.5# 入力と出力
Moon Boardのホールドはアルファベットと数字で表示できるので、こんな感じにしました。“`
lease use letters and numbers and leave a space f
ポケモン剣盾のランクバトルのバトルデータをMetabaseで可視化する。
ポケモンホームというアプリのバトルデータという機能で、ポケモン剣盾ランクバトルのデータが見られるようになりました。
[その他の機能 \| 『Pokémon HOME』公式サイト](https://www.pokemon.co.jp/ex/pokemonhome/features/)ただ、肝心のUIがバグありすぎてかなり使いにくいのと、検索機能が存在せず、戦略の参考にしづらいため、バトルデータの情報を抜き出して[Metabase](https://www.metabase.com/)で可視化することにしました。
MetabaseはOSSのデータ可視化ツールで、MySQLやPostgres、MongoといったDBのデータを簡単操作でグラフにしてくれます。バトルデータの中身はただのWebViewで、普通のWebページを表示しているだけなのと、データ自体はJSONでやりとりされているため、JSONの内容を自分の使いたいDBにインポートできればMetabaseで可視化可能です。
私はお手軽さを優先してJSONの中身をSQLite3に変換しました。## バトルデータのJSONを取得す
AtCoder勉強メモ
# 入出力関連
## 入力
### 全行の入力“`python
import sys
list_1 = []
for in_val in sys.stdin:
add_val = int(in_valu.rstrip(“\n”)) # rstripで右から改行文字を削除
list_1.append(add_val)
“`### ある値(XXXX)まで入力
“`python
“””
1
9
2
XXXX
“””
list_1 = []
for in_val in iter(input, XXXX):
list_1.append(in_val)
# list_1 -> [“1”, “9”, “2”]
“`
`iter()`は第一引数に指定した呼び出し可能オブジェクトが、第二引数を返すまで繰り返されるものらしい↓
[Pythonのinput関数でキーボードからの入力を取得](https://note.nkmk.me/python-input-usage/)## 出力
1. リストを横に出力
アンパックを利用して出力“`pytho
CSVファイルの読み込み:pandas
csvファイルの読み込み方法について、メモしておく
#csvファイルの内容
![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548325/5ad040ea-b958-185c-9ecf-b180722503cf.png)
上記のような簡易のもので確認していく#pandasのインポート
“`
import pandas as pd
“`#読み込みと表示
“`
data = pd.read_csv(‘csvファイルのパス/ファイル名.csv’)
print(data)
“`
1行目でcsvファイルを読み込み、2行目で表示。
下記が表示される![csv表示.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548325/2dae6a81-c918-f452-1133-aedc3c6f113b.png)
#ヘッダー情報
“`
print(data.columns)
“`
上記のコードを実
Dockerを使ってAnaconda環境を作ってみた!
## 目的
Pythonでデータ解析を行う際に、Anacondaをインストールのが一番簡単な方法である。
しかし、ホストの環境に直接Anacondaをインストールする事で、PC環境が変わってしまう可能性がある。
そこで、今回は、Dockerを使って、仮想環境にAnacondaをインストールして、Jupyter notebookを起動させるまでを行いたいと思います。## 動作環境
Mac: Catalinaバージョン10.15.5
Docker: 19.03.8## インストール方法
Dockerの[公式ページ](https://www.docker.com/get-started)で、インストーラーをダウンロードして、Dockerをインストールする。作業を行うフォルダに以下のDockerfileを保存する。
“`Dockerfile
FROM ubuntu:latestRUN apt-get update && apt-get -y upgrade && \
apt-get install libgl1-mesa-glx libegl1-mesa l
James-Stein推定量を解説してみた
# 目的
大学院の授業でJames-Stein推定量という聞き慣れないものを学び、Webで検索したところ、あまり記事が見つからなったので、忘備録として残しておきます。# 問題設定
まず、以下の確率モデルを考えます。
$$
p(\boldsymbol{x}|\boldsymbol{\theta})=\prod_{i=1}^D\frac{1}{\sqrt{2\pi}}\exp\left(-\frac{1}{2}(x_i-\theta_i)^2\right),\quad(\boldsymbol{x}\in\mathbb{R}^D,\boldsymbol{\theta}\in\mathbb{R}^D)
$$
これは入力$\boldsymbol{x}$の各次元に独立にガウス分布$\mathcal{N}(\theta_i,1)$を仮定しています。
1個の観測$\boldsymbol{x}$からパラメータ$\boldsymbol{\theta}$を点推定したい。その際、目的関数として設定するのが、
$$
\mathbb{E}_{p(\boldsymbol{x}|\boldsymbol{\thet
製薬企業研究者がPythonを用いたデータベース操作についてまとめてみた
# はじめに
ここでは、PythonでMySQLを操作する方法について解説します。
# レコードの新規作成
csvで保存しているテーブルをMySQLに登録するには、以下のようにします。
“`python
import pandas as pd
import sqlalchemy as saurl = データベース接続情報
engine = sa.create_engine(url)df = pd.read_csv(ファイル名)
df.to_sql(テーブル名, engine, index=False, if_exists=’replace’)
“``pandas.to_sql`メソッドの`if_exists`は`append`にすることで、上書きではなく追記になります。
# まとめ
ここでは、Pythonを用いてMySQLにデータを追加する方法について解説しました。
SQL Alchemyを使うと、直接SQLを記述しなくてもデータベースにデータを登録することができます。# 参考資料・リンク
[プログラミング言語Pythonとは?AIや機械学習に使え
Colab Proを日本から登録する
#Colab Proを使う
普段、google coraboratoryを使っていますが、ソースデーターが大きすぎたり、レイヤーが重なりすぎて処理が思いと動かないことがあります。そんなときは、proバージョンを使うという選択肢があるようです。#登録の方法
https://colab.research.google.com/signup現在、米国限定のサービスのようですが、日本からでも登録ができました。
このページにアクセスし、自分のgoogleアカウントでログインして、クレジットカード(日本の住所登録のもの)と米国の郵便番号(仮にロスアンゼルス90001を入れてみた)を入れたところ、無事登録できました。登録が完了すると、自分のgoogleアカウントのgoogle colaboratoryが、自動的にPRO版に変わります。
#Colab Proのメリットとデメリット
Colab Proのメリットとデメリットについては、こちらに整理した記事がありました。
https://qiita.com/kurilab/items/c58226bcb6150d50b618– 24時間
Pythonでbitbucketのレポジトリ一覧を取得する
# はじめに
git pythonを利用してbitbucketのプライベートレポジトリの一覧を取得します。
参考: [シェルスクリプトでの取得方法](https://qiita.com/monoqlock/items/8a9f4cd7122eca5e7a77)
## 用途
こちらのエントリ[開発チームの生産性・健全性を客観的に知るためにリポジトリ履歴から機械的に可視化するツールを作った](https://qiita.com/hirokidaichi/items/ceece347f808cc9d14dd)を読んで会社の中でもこの可視化ツールを使ってレポジトリも横並びで評価したいなと考えています。この時にbitbucketのプライベートレポジトリの一覧をpython経由で取得できると便利だったので、今回の紹介に至りました。## 作成したスクリプト
“`python:main.pyimport os
from os.path import join, dirname
from dotenv import load_dotenv
import requests
import json
VSCode にPython仮想環境を追加する
# はじめに
venvで作成した仮想環境が,Visual Studio Codeの”select interpreter”で表示されずつまづいたのでメモしておきます。## 前提
– macOS Catalina 10.15.5
– Visual Studio Code 1.45.1
– Python 3.8.2# Pythonの仮想環境作成
Pythonの仮想環境作成にはvenvを使用しました。最新のPythonであれば標準で実装されています。詳しくは[こちら](https://docs.python.org/ja/3/library/venv.html)。仮想環境を作ります。将来的に複数の仮想環境を用意することを想定して,”python_envs”というフォルダを用意して仮想環境をまとめました。機械学習と画像処理用の環境なので,名前は”mlcv”です。
“`
python3 -m venv python_envs/mlcv
“`# VSCodeの仮想環境読み込み先を設定
“python_envs”に作った仮想環境をVSCodeが自動で読み込むよう設定します。
`
Saliency Mapを使って有名な絵画を分析してみる
#はじめに
本当に突然ですが、次の絵を少しだけ鑑賞してみてください.
![parents.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391115/13342296-6a3c-74a0-c01e-43ec87a6959c.jpeg)
David Hockney *My Parents* 1977何か見つけたり感じたりしたことはありましたでしょうか?
もちろん絵の鑑賞に正解も不正解もないのですが、例として個人的には次のようなことを感じました.
– おばあさんは真っ直ぐなのに対しておじいさんは斜めを向いて歪んでいる
– 花瓶の色合いや形がおばあさんを象徴しているように見える
– 横の鏡のフレームの色や歪み具合がおじいさんを象徴しているように見える一つの対象物だけではなく、色々な物体を見てその関係性を考えてみたりすると意外な発見があったりして面白いと感じています.
他にも絵画鑑賞する際の素人の視点の動きとプロの視点の動きを比較した研究もあったりします.
**素人は目立つものにばっかり注目する*
Python3 エンジニア認定基礎試験 取得についての備忘録
本日(6/6)にPython 3 エンジニア認定基礎試験を取得したので 記録させていただきます。
# 結果
以下はスコアーボードになります。
正解率 70% Python3の試験は70%合格なので、ジャストでした、、、、
模擬問題と同じ問題も3問くらいありましたが、基本的に値も出題方法も
模擬試験と本番は全然違いました。
本番の方が難しいです。余裕で。
以下と同様の結果となる物を選べ的なのが多いです。# 自身のスキルについて
・Python経験なし。
・.NET経験が約7年。(うち、実装経験は4年くらい?)# 勉強アーカイブ
ブラック企業に出向しているため、コロナ禍でもテレワークならず
普通に忙しい、日々を過ご
[python] 配列スライス操作
#pythonでよく使う配列のスライス操作の確認
pythonを勉強し始めてからすごくスライス操作を使うので、ここで一度自分の確認のためにもまとめたいと思います。###配列の操作
まずは配列から、pythonでは作った配列に自動的に番号がつくようになっていて(indexと呼びます)0からスタートして作った中身の数分番号が振り当てられます。“`python
l = [5,3,1,2]
print(l.index(5))
print(l.index(3))
print(l.index(1))
print(l.index(2))
“`“`
$ python atcoder.py
0
1
2
3
“`
こんな感じに配列の中の5,3,1,2には0123が順番に振られていることがわかりました。
ちなみにl.index()の.index()は配列などindexがふられているものに使える関数で、指定したところのindex番号が取れます。次はそのインデックスを使って配列の値を取り出します。
“`python
l = [5,3,2,1]print(l[0])
print(l
ゼロから始めるLeetCode Day48 「26. Remove Duplicates from Sorted Array」
#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetCode Day47 「14. Longest Common Prefix」](https://qiita.com/KueharX/items/b97dbbcb697585924d30)今はTop 100 Liked QuestionsのMediumを
【Python】ローカルPC上のファイルを外付けSSDに自動でカット&ペーストするスクリプトを作ってみた
# あらすじ
ローカルPCでロギングしたデータをSSDに格納する、という作業が定常的に発生していました。
その作業には、以下二点の問題点がありました。1.作業そのものは単純である一方、細かいルールがあり、そのルールを知っている人以外は作業し辛い
ルール例:
・SSDにデータを格納する際のフォルダ名は日付にする
・ローカルPCにデータを残したくないのでカット&ペーストする
2.1のルールを知っていても作業自体が面倒臭い上記問題を解決すべく、Pythonで自動化しようと考えました。
備考・Python 3.6.6
# 挙動
以下フローにて動作します。
![SSD自動化.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271833/236dd7b3-cc29-bda6-3cf2-f5d9dbf98667.png)
# ソース
“`python:extract_data_to_SSD.py
import os
import re
import sys
import
貪欲法を学ぶ
#AtCoder 版!蟻本 (初級編)
今日から[AtCoder 版!蟻本 (初級編)](https://qiita.com/drken/items/e77685614f3c6bf86f44)の記事を読み進めましょう!
[蟻本](https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%B3%E3%83%B3%E3%83%86%E3%82%B9%E3%83%88%E3%83%81%E3%83%A3%E3%83%AC%E3%83%B3%E3%82%B8%E3%83%96%E3%83%83%E3%82%AF-%E7%AC%AC2%E7%89%88-%EF%BD%9E%E5%95%8F%E9%A1%8C%E8%A7%A3%E6%B1%BA%E3%81%AE%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E6%B4%BB%E7%94%A8%E5%8A%9B%E3%81%A8%E3%82%B3%E3%83
PythTBことはじめ
# PythTBの概要
Pythonでtight-binding approximationの計算が出来るアプリケーション。
[Python Tight Binding (PythTB) — PythTB 1.7.2 documentation](https://www.physics.rutgers.edu/pythtb/)# インストール
## 一般ユーザー権限でインストール
上記の公式ドキュメントを見ると、`pip install`が出来る、大変心配りが行き届いたコード/ライブラリである。しかし、`pip install`は過去に環境破壊されたトラウマがあるので、出来るだけ使いたくはない。そこで、ドキュメントにもあるとおり、コードをダウンロードしてきて`python setup.py install`でのインストールを試みる。### ダウンロードと展開
この記事を書いた時点でのバージョンは1.7.2。ウェブページにファイルのURLが書いてあるので“`bash
wget https:/hogehogehogehoge.hogehoge/pythtb-1.