- 1. Pythonの仮想環境の構築についてやったのでメモ
- 2. pythonで、CPPのヘッダ部分をかき集めてCSVに書く!
- 3. 【学習記録】フラグ管理 (paizaランク D 相当)
- 4. Pythonによる統計学〜t検定編〜
- 5. seleniumで遊ぼう! 〜自動ログイン編〜
- 6. JavaScriptでPythonのrange関数を実装する
- 7. 【NLP】医療系タスクに使える自然言語処理モデル一覧
- 8. Layer付きのAWS Lambda functionをServerlessFrameworkでローカル実行するとLayerが参照できない
- 9. ABC220 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder
- 10. ABC60 B – Choose Integers / C – Sentou 両方 diff 茶だった
- 11. ABC73 C – Write and Erase を解いた
- 12. scipy.optimize.fsolve の中身を考える
- 13. Python で json形式のデータを Azure Blob に アップロード してみました
- 14. 比較元リストと比較先リストの比較(pythonでterminalを操作)
- 15. 推計統計学のPythonでの簡単な実装
- 16. 【python】クロージャ[py_03_20211006]
- 17. M1 MacにPyxelを導入する
- 18. pandas str.containsについて
- 19. シンプルな Web API を FastAPI で作成
- 20. 【学習記録】 文字列 (paizaランク C 相当)
Pythonの仮想環境の構築についてやったのでメモ
#仮想環境とは
仮想環境では、すべてのPythonのパッケージから切り離して、独自のパッケージをインストールできる仮想のファイルを作成してくれます。プロジェクトごとに必要なパッケージを用意できるので、モジュールの管理も簡単。##仮想環境の作成手順
###01. 仮想環境を作成するファイルの階層にて、
“`python
python -m venv ll_env
“`
*(ll_env)は仮想環境の名前なので、任意の名前###02. 仮想環境を有効化
“`
source ll_env/bin/activate
“`
*(ll_env)は仮想環境の名前なので、任意の名前###03. 仮想環境の無効化
“`
deactivate
“`
pythonで、CPPのヘッダ部分をかき集めてCSVに書く!
こんな感じでパス設定すればOK
“`
#! /usr/bin/env python
# -*- coding: utf-8 -*-import glob
import csvif __name__ == ‘__main__’:
filelist=[]
filelist.extend(glob.glob(‘./src/**/*.cpp’, recursive=True))
filelist.extend(glob.glob(‘./src/**/*.c’, recursive=True))
filelist.extend(glob.glob(‘./inc/**/*.hpp’, recursive=True))
filelist.extend(glob.glob(‘./inc/**/*.h’, recursive=True))header_list=[]
header_list.append([“src”,”line”,”include”])for filepath in filelist:
【学習記録】フラグ管理 (paizaランク D 相当)
## 目次
– 問題文
– 書いたコード
– 解答例
– 学んだこと
– 振り返り## 問題文
[詳細はコチラ](https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_for_step2)###問題文の要約
一行目に以降の入力件数を、二行目以降に7があればTrue、なければFalseを表示せよ。>入力例2
3
4
11
35>出力例2
NO## 書いたコード(その1)
“` main.py
count = int(input())for (a, i) in enumerate(range(count)):
b = input().split()
if str(7) in b:
print(“YES”)
break
else:
if (a+1) == count:
print(“NO”)
“`今までは一つ一つYES,NOを表示していくパターンが多かったので、どうやって一度だけprintを表
Pythonによる統計学〜t検定編〜
# はじめに
教育心理学系の学部の方から対応の無いt検定をPythonで行いたいという質問をいただきました。今回紹介する対応の無いt検定は実際の分析でも使用することも多く、統計的仮説検定を実務に活用するというとっかかりとしても勉強しておいて損はないと思います。
また、2標本t検定の中でも等分散性を仮定できない場合に実行するウェルチのt検定を中心に解説しようと思います。(汎用性が高く、例えばRではデフォルトの設定がウェルチのt検定です。)
※最後にでも記載しましたが、統計的仮説検定そのものに対する問題点やp値についての議論はここでは行いません。
## 主に使用する関数
“`Python
# 両側検定(SciPyのデフォルト)
stats.ttest_ind(data1, data2, equal_var=False)# 片側検定
stats.ttest_ind(data1, data2, equal_var=False, alternative=”less”)
# または、
stats.ttest_ind(data1, data2, equal_var=False,
seleniumで遊ぼう! 〜自動ログイン編〜
スクレイピングやブラウザの自動操作に興味が湧いたので、
とりあえずselenium使ってみることにしました!
とりあえず、使ってみるにしても何か身の回りの作業をやってもらいたかったので、今回は、大学のオンライン授業サイトに自動でログインするツールを作ってみました!最初にソースコードを、
“` python:loginTool
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import chromedriver_binary# ブラウザを開く。
driver = webdriver.Chrome()# 授業サイトを開く。
driver.get(“ここに自分の大学のURLを貼り付けてね”)#ユーザーidの要素を取得
element1 = driver.find_element_by_id(“username”)
#ユーザーidの入力
element1.send_keys(“ここにユーザーidを入力してね!”)
#パスワードの要素を取得
element2 =
JavaScriptでPythonのrange関数を実装する
# はじめに
これらと同じことをJavaScriptでやる。
“`py
for i in range(10):
print(i)
“`“`py
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list(range(10))# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(range(1, 11))# [0, 5, 10, 15, 20, 25]
list(range(0, 30, 5))# [0, 3, 6, 9]
list(range(0, 10, 3))# [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
list(range(0, -10, -1))# []
list(range(0))# []
list(range(1, 0))
“`# 仕様
– すべて数値型の range(end) と range(start, end[, step]) の引数を受け取る。
– 渡された引数がない場合はエラーを投げる。
– 最初に載せたPythonのコードと
【NLP】医療系タスクに使える自然言語処理モデル一覧
###初めに
今回の記事はSIGNATEの医学論文の自動仕分けチャレンジで使用した医学系のモデルをまとめました。
どのモデルもHuggingfaceから使用できるモデルなので簡単にすぐ使用できます。ざっくりとモデルの概要説明のみ記載しているので詳しい仕組みや学習時のパラメータ設定、モデルのベンチマークなどは論文内の情報を参照してください。https://signate.jp/competitions/471
###前提知識
まずは、前提として医療系モデルの事前学習に使用されるメジャーなデータセットの解説
**・Pubmed**
生命科学や生物医学に関する参考文献や要約を提供する検索エンジン。アメリカ国立衛生研究所のアメリカ国立医学図書館(NLM)が情報検索Entrezシステムの一部としてデータベースを運用しています。
**・PMC**
アメリカ合衆国の国立衛生研究所 (NIH) 内の国立医学図書館 (NLM) の部署である国立生物工学情報センター (NCBI) が運営する、生物医学・生命科学のオンライン論文アーカイブです。
**・MIMIC-III**
MIMIC-IIIは
Layer付きのAWS Lambda functionをServerlessFrameworkでローカル実行するとLayerが参照できない
# 概要
タイトルの通り、Layerを用いて一部ライブラリを共通化しているAWS Lambda functionを、serverlessでローカル実行しようとした時につまずいたので備忘録として残しておく。
# 経緯
最近、趣味でAWS Lambda上で動かすpythonプログラムを作成していて、デプロイが楽になるとのことなのでserverlessを導入していた。
その際、functionを複数作成しており、一部ライブラリはLayerを用いて共通化していた。作成したプログラムの構成は以下。
“`
プロジェクトルートディレクトリ
├─function1
│ └─src
│ └─handler.py
├─function2
│ └─src
│ └─handler.py
├─layer
│ ├─layer1
│ │ └─layer1のpythonライブラリ・ソース群
│ └─layer2
│ └─layer2のpythonライブラリ・ソース群
└─serverless.yml
“`また、serverless.ymlの記述内容は以下。
(本
ABC220 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder
ABC220(AtCoder Beginner Contest 220) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。その他のABC解説、動画などは以下です。
https://qiita.com/sano192/items/54accd04df62242b70f0
##A – Find Multiple
https://atcoder.jp/contests/abc220/tasks/abc220_a
今回のA問題は「やや難」です。
普段のA問題はもっと簡単なので、今回A問題が解けなかった人も落ち込まずに競技プログラミングを続けてください。公式解説の方法でも解けますが思いつくのが難しいです。
A~Bまでの数について順に「Cの倍数か」=「Cで割った余りが0か」を確認すればOKです。A~Bまで確認するときは以下のように書きます。
for x in range(A,B+1):
上記のように書くことでx=A~Bまで順に処理ができます。
range(A,B)ではなく、range(A,B+1)であることに注意してください。xをCで割った余りは
x
ABC60 B – Choose Integers / C – Sentou 両方 diff 茶だった
https://atcoder.jp/contests/abc060/tasks/abc060_b
![abc60b_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/857310be-0790-0a9e-d7ea-ff3e5ace9d1d.png)
![abc60b_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/343fe36b-de2e-69b0-a785-a01a45346335.png)
![abc60b_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/f3653598-3736-7af4-598b-ed8ebc8f2dc1.png)
![abc60b_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/
ABC73 C – Write and Erase を解いた
https://atcoder.jp/contests/abc073/tasks/abc073_c
![abc73_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/fe024a20-5a34-b8c1-be4b-29fd0eb9cb9c.png)
![abc73_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/8b388a4c-be12-9297-d524-6d32693ab366.png)
![abc73_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/53753097-4d74-fe79-86a3-75e1fdc26a95.png)配列を 10^9 用意して
True,False で最終的な True を数えようと思った。
だがしかし Memory error.じゃあ辞書 or
scipy.optimize.fsolve の中身を考える
# 概要
## SciPy
[Wikipedia(2021/10/06 現在)](https://ja.wikipedia.org/wiki/SciPy) より抜粋> SciPyはPythonのための科学的ツールのオープンソース・ライブラリとして開発されている。SciPyは配列の高速な操作のためのすべてのライブラリを含んでおり、人気のNumericモジュールを置き換え、ひとつのパッケージとして高レベルな科学と工学のモジュールを集めたもの。
>
> SciPyは、配列オブジェクトとその他の基本的な機能を備えたNumPyを基礎にしている。SciPy は統計、最適化、積分、線形代数、フーリエ変換、信号・イメージ処理、遺伝的アルゴリズム、ODE (常微分方程式) ソルバ、特殊関数、その他のモジュールを提供する。## scipy.optimize.fsolve
`optimize` は最適化を意味し,ここにはその名の通り[最適化問題](https://ja.wikipedia.org/wiki/%E6%9C%80%E9%81%A9%E5%8C%96%E5%95%8F%E9%A1%8C)
Python で json形式のデータを Azure Blob に アップロード してみました
## 概要
Azure SDK for Python を利用して、json形式のデータを直接 Azure Blob にアップロードしたり、json形式のローカルファイルを Azure Blob にアップロードしたりするための Python プログラムです。BLOBへの接続には「接続文字列」を使用せず、ServicePrincipal を定義し、アップロード先のコンテナのみにロールを割当てました(Azure Founctions化を考慮して)。
### 実行環境
macOS Big Sur 11.1
python 3.8.3
Azure CLI 2.28.0—
## 事前の準備
### ストレージアカウントの登録
“`
## 使用するテナントのAzure環境へのログイン
$ az login –tenant## 使用サブスクリプションを定義します
$ az account set –subscription ‘‘ ## リソースグループの作成
$ az group create –reso
比較元リストと比較先リストの比較(pythonでterminalを操作)
#何故このようなprogramを作ろうと思ったのか
というと、pipに、”python3 -m pip insutall モジュール名”でパッケージをインストールすると、インストールしたモジュール以外の関連モジュールもインストールされる。
そこで何がインストールされたか調べるために、Numbsers(exact関数)でセコセコ調べていたが、手間がかかるので pythonで処理できないかと考えて作ってみた。
#ここで学んだこと[pythonの学習]
>
①pythonからTerminalを操作する —- subprocess
②テキストファイルに書き込む
③テキストの前後の一部抹消
④テキストファイルから読み込みllistにする
⑤ファイルをコピーする —- shutil
⑥llistの比較(差集合)
⑦if \_\_name__ == ‘\_\_main__’の使い方
>##■環境
>
macOS Big Sur 11.6
python 3.7.7
>##■インポートするモジュールは以下の通りです。
“`python
import subprocess as sb # py
推計統計学のPythonでの簡単な実装
# 推計統計学
様々な種類を持つ統計学ですが、代表的なものとして「記述統計学」、「推計統計学」、「ベイズ統計学」の3種類があります。(今回は「ベイズ統計学」に関しては置いておきます。)
「記述統計学」と「推計統計学」はそれぞれ、記述統計学 = `手持ちのデータを集計する方法の学問`、
推計統計学 = `手持ちのデータを分析して、まだ手に入れていないデータについて議論する方法を学ぶ学問`と説明されます。
(引用:[Logic of Blue 記述統計の基礎](https://logics-of-blue.com/%E8%A8%98%E8%BF%B0%E7%B5%B1%E8%A8%88%E3%81%AE%E5%9F%BA%E7%A4%8E/))
つまり、記述統計学ではデータ(標本)から平均や標準偏差を求めるのに対して、推計統計学では標本をベースに統計的な分析を実施して、その背後にあるデータ全体(母集団)を求めます。![m-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1859
【python】クロージャ[py_03_20211006]
###はじめに
Pythonでは関数の中に関数を定義することができます。###実行環境
pycharm 2021.2(python3.10)###コード1
まずはクロージャの簡単な動作から。“`python
def func():
def inner(a):
print(‘a:’, a)
print(‘a**2:’, a ** 2)inner(2)
func()
“`表示
“`
a: 2
a**2: 4
“`###コード2
関数内関数を使うことにより、関数を戻り値として返すことができるようになります。“`python
def adder(a):
def inner(x):
# xは関数内関数の引数、aはadder呼び出し時の引数
return x + a
return inner# クロージャを作成し、add3, add5に代入する
add3 = adder(3)
a
M1 MacにPyxelを導入する
#実行環境
-Macbook Air (M1, 2020)
-メモリ 16GB
-ストレージ 1TB#失敗例
###とりあえず公式README通りにインストールしてみる
[pyxel/README.ja.md at main · kitao/pyxel](https://github.com/kitao/pyxel/blob/main/README.ja.md#mac)“`
brew install python3 gcc sdl2 sdl2_image gifsicle
“`
ターミナルを再起動後“`
pip3 install -U pyxel
“`
ターミナルを再起動後“`
mkdir pyxel_sample
cd ./pyxel_sample
install_pyxel_examples
“`
###なぜかうまく動作しない
ターミナルの出力“`
user@MACBOOK-AIR pyxel_sample % install_pyxel_examples
Traceback (most recent call last):
File “/op
pandas str.containsについて
## この記事の目的
pandasのDataFrameの検索方法について整理## pandasとは?
データ解析を容易にするためのライブラリ
私の場合、csvからデータを読みこみ、
pandasを使用してDataFrameにしていじったりします### DataFrameとは?
pandasでデータを扱う際の型になります
DataFrameとSeriesがあります– Series(シリーズ)
データが1列の場合の型です– DataFrame(データフレーム)
データが複数列の場合の型です
DataFrameから1列を抽出した場合、自動でSeriesとなります## DataFrameでの検索(str.contains())
今回はDataFrameでの検索方法の中で、str.contains()を使用した方法を整理しました
str.containsは特定の文字を含む検索が可能です次のようなDataFrameを例とします
“`
A B C D
0 NaN B0 C0 D0
1 B1 C1 D1
2 A1 B2
シンプルな Web API を FastAPI で作成
# はじめに
機械学習で作成したモデルを実用化するには、システムが必要になる。もっともシンプルなシステム実装としては、学習済みモデルが API リクエストに対して推論結果をレスポンスで返す簡単な Web API が考えられるが、機械学習モデルは大半が Python で構築されているため、API も Python ベースで作成することが望ましい。
本記事では、後々機械学習モデルの推論結果を返す Web API を作成することを見据え、まず簡単な Web API を Python フレームワークである FastAPI を用いて作成してみる。[FastAPI 公式ドキュメント](https://fastapi.tiangolo.com/ja/)を参考にした。# FastAPI のインストール
[FastAPI 公式ドキュメント](https://fastapi.tiangolo.com/ja/)を参考にインストールする。
“`bash
$ pip install fastapi uvicorn
“`# Web API の作成
main.py を作成して、以下コードで最低限
【学習記録】 文字列 (paizaランク C 相当)
## 目次
– 問題文
– 書いたコード
– 解答例
– 学んだこと
– 振り返り## 問題文
[詳細はコチラ](https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_string_boss)###問題文の要約
一行目に以降の入力件数を。二行目以降で、スタート時刻と、要する時間のセットを複数行与えられる。>入力例2
2
15:59 0 1
23:20 1 0>出力例2
16:00
00:20## 書いたコード
“` main.py
count = int(input())def time_change(h, s):
if s >= 60:
h += 1
s -= 60
if h >= 24:
h -= 24
else:
if h >= 24:
h -= 24
if len(str(h)) == 1:
h = “0” + str(h)