Python関連のことを調べてみた2021年09月16日

Python関連のことを調べてみた2021年09月16日
目次

Google Cloud Functionsで、GitHubのprivateリポジトリにある自作ライブラリを使う方法

Google Cloud Functions(以後、GCF)でアプリをデプロイするとき、Cloud Build環境でSSHキーにアクセスできません。そのため、GitHubのprivateリポジトリにアクセスできないので、アプリのソースコード上に自作ライブラリをあらかじめ組み込んでおく必要があります([公式リファレンス](https://cloud.google.com/functions/docs/writing/specifying-dependencies-python#using_private_dependencies))。

しかしながら、`pip install -t`でインストールした方法ではいくつか問題があります。

そこで本記事では、ライブラリをwhlに固めてから組み込む方法を紹介します。

## 自作ライブラリのソースコードをpip install -tで組み込む問題点

Pipfile, requirements.txtなどで依存ライブラリを一元管理できなくなります。また、自作ライブラリの依存ライブラリがアプリのソースコード下に組み込

元記事を表示

PythonistaのためのC++記法入門: それC++ではどう書くの6 ~関数定義1~

[PythonistaのためのC++記法入門: それC++ではどう書くの5](https://qiita.com/nctp/items/5088cd08354b4300bfc6)の続き。今回からは関数について。

# 関数関連

## 関数の基本

例として
1. **整数型の2値**を受け取ってその和(整数型)を返す関数
2. **整数型の2値**を受け取ってその平均(**整数型とは限らない**)を返す関数
を考える。

### Pythonではこう書いた

“`python
def sum(x, y):
ans = x + y
return ans

def average(x, y):
ans = sum(x, y) / 2.
return ans

def main():
a = 10
b = 20
print(sum(a, b)) # 30 が出力される
print(average(a, b)) # 15.0 が出力される

if __name__ == ‘__main__’:
main()
“`

元記事を表示

PythonistaのためのC++記法入門: それC++ではどう書くの5 ~条件文~

[PythonistaのためのC++記法入門: それC++ではどう書くの4](https://qiita.com/nctp/items/399d224bb4043edfbcc8)の続き。今回は短め。

# if文

### Pythonではこう書いた

“`python
if a == 10:
# 処理A
elif a == 100:
# 処理B
else:
# 処理C
“`

bool値に関しては以下のように書ける
Pythonでは`0`や空文字列`””`、空の`list`なども`False`として扱われる。

“`python
flag = True
if flag:
# 処理

flag = False
if not flag:
# 処理
“`

### C++ではこう書く

“`cpp
int a;
if (a == 10) {
// 処理A
}
else if (a == 100) {
// 処理B
}
else {
// 処理C
}
“`

bool値に関しては以下のように書ける。

“`cpp
bool f

元記事を表示

Fundamental Statistics for Data Science (Part 02)

continuation from [Fundamental Statistics for Data Science (Part 01)](https://qiita.com/qualitia_cdev/items/ad872ebbcd408e613218).

###### 5) Mean
Mean is also famous as average in mathematics, which can be obtained by summing all the observations and divided by the number of data points.

Let us think that a random variable has the following data. N is the number of data points.

X = { x1, x2, x3, . . . , xN }

We can calculate the mean using the fo

元記事を表示

pythonでブロックで実行時間をログに残る

# 背景
* pythonでDB query実行時間などを残りたい
* いつでもend – startで時間を計算することが面倒

## 普通のやり方

“`python
time_sta = time.perf_counter()
time.sleep(2)
time_end = time.perf_counter()
print(time_end – time_sta)
“`

# 対策
* rubyのブロックように実装して便利になると思う
* pythonではrubyのblockのような予約語がない

## 実装してみる

“`python
from contextlib import contextmanager
import time
import sys

@contextmanager
def time_count(function_name: str):
time_sta = time.perf_counter()
yield
time_end = time.perf_counter()

元記事を表示

犬と猫の分類をPytorchでファインチューニングをしてやってみた

# はじめに
[コチラ](https://book.mynavi.jp/ec/products/detail/id=104855)の書籍でPytorchの勉強をしているのですが、実際に使わないと理解できないと思ったので、Kaggleの[犬猫コンペ](https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition)をPytorchを使ってやってみた記録です。

モデルにはefficientnetB7を使ってファインチューニングを行いました。

# 環境
Google colabを使います。

Pytorch: 1.9.0+cu102
python: 3.7.11

# 実装の流れ
1.データの用意
2.データの前処理
3.データセットの作成
4.データローダーの作成
5.モデルの構築
6.損失関数、最適化アルゴリズムの定義
7.学習・検証
8.テストデータで推論

となります。1つずつ紹介します。

## 1. データの用意

今回の犬猫コンペの画像データは容量が重いのでGoogleDriveにアップロードするのもそこからデータ読み

元記事を表示

gremlin-server コンテナを立ち上げる② ー neo4j embeded

# はじめに

[gremlin-server コンテナを立ち上げる](https://qiita.com/tkosht/items/c10350592bdb3ec4a54b) の続編です。
neo4j のファイル群を使って、gremlin サーバ上のグラフデータを永続化する方法について整理します。

# TL; DR

– 勘違いしていた点
– BOLT 接続は、リモートNeo4jサーバ へプロキシすると思っていたが、そうではない
– Cypher を gremlin で使えるようにするらしい (試していないです・・)
– 設定ファイルの変更点
– gremlin-server.yml をベースに、gremlin-server-neo4j.yml を作成
– もちろん、サンプルの gremlin-server-neo4j.yaml も参考
– docker-compose.override.yml の entrypoint の設定ファイルパスを変更
– Python 経由で使っても、問題なく動作する
– コード一式(設定ファイ

元記事を表示

AWSでAIサービスを使ってみる〜⑩lex編その2〜

##前回ファイルの実行と今回
前回のlex_create_bot.pyファイルを実行していませんでした。
今回を前回ファイルを実行しbotを作成。botと文字で会話するプログラムを解説し、botを動かして行きます。

前回ファイル

“`lex_create_bot.py
import boto3
import time

iam = boto3.client(‘iam’)
iam.create_service_linked_role(AWSServiceName=’lex.amazonaws.com’)
lex = boto3.client(‘lex-models’, ‘us-east-1′)

#フレーバーのスロットタイプの作成
flavor_slot_type = lex.put_slot_type(
name=’FlavorSlotType’,
enumerationValues=[
{‘value’: ‘vanilla’},
{‘value’: ‘chocolate’, ‘synonyms’: [‘choc’]},
{‘value’: ‘s

元記事を表示

ABC177 C – Sum of product of pairs から学んだ

https://atcoder.jp/contests/abc177/tasks/abc177_c

![abc177_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/294116be-3d21-5b21-0074-e64c5504c877.png)

無心になったが、とりあえず
サンプルも読む。

![abc177_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/61831574-8c1b-8eca-7aa2-67d822fa5bc1.png)

なるほど。
例えば** 1 2 3 4 **が与えられたとすると
**1×2+(1+2)x3+(1+2+3)x4**とならないか?

後は表現方法が問題だ。
だがしかし、tle & wa

“`ans.py
N = int(input())
A = list(map(int,input().split()))

score = A[0]*A

元記事を表示

1.1. csvファイルを読み込む

ここでは、csvファイルの読み込みを説明します。
Pythonを学習していく上でデータインポートは必須であり、`print()`文や`for文`を覚えたら、次に知りたいのが、データファイルのインポートのはずです。

#**トピック**

– **1. pandasでcsvファイルを読み込む**: `pd.read_csv()`
– **2. pandasで行、列の範囲を指定して csvを読み込む**
**2.1 日本語を含んだファイルの場合**: `pd.read_csv(encoding=”shift_jis”)`
**2.2 範囲を指定する**: `pd.read_csv(skiprows=, skipfooter=, usecols=)`
– **3. 日付をindexとして読み込む**: `pd.read_csv(parse_dates=True)`
– **まとめ**
**ポイント整理**
– **参考ページ**

https://shilabo.com/python/web_self/

https://note.nkmk.me/pyth

元記事を表示

Pythonで結晶を描画するプログラムを作る~分極座標とアフィン変換~

投稿日:2021/09/15
更新日:2021/09/16 (文章、プログラムのコメント、分極座標系の例の追加・修正)

# はじめに
Pythonで結晶を描画するプログラムを作るシリーズの第2回目です。今回はCIFデータ内で使われている分極座標 (fractional coordinate system) (文献によっては原子座標、規格化座標などと呼ばれる)と直交座標系の関係性とその分極座標上のアフィン変換について説明していきます。今回は座学多めで、感覚的に対称操作というものを理解する事を目的とします。

– [Pythonで結晶を描画するプログラムを作る~単位格子を描く~](https://qiita.com/PHVTuber/items/d075e05b8b014a3350c9)

#1. 分極座標 (fractional coordinate system)
第1回目の記事でみたように6つの結晶パラメータから大きさや形が異なる単位格子が生成されます。その内、結晶をなすものは7つの晶系に分類され、結晶はそのどれかに必ず分類されます。これらを統一の規格で評価する座標系の1つが分極座

元記事を表示

LeetCode344[Reverse String]-Recursion再帰で実現する。

タイトルの通り、LeetCode 344の解き方についてシェアしてきます。

問題文はそのままコピーします、

“`md
Write a function that reverses a string. The input string is given as an array of characters s.

Example 1:

Input: s = [“h”,”e”,”l”,”l”,”o”]
Output: [“o”,”l”,”l”,”e”,”h”]
Example 2:

Input: s = [“H”,”a”,”n”,”n”,”a”,”h”]
Output: [“h”,”a”,”n”,”n”,”a”,”H”]

Constraints:

1 <= s.length <= 105 s[i] is a printable ascii character. ``` ま、簡単に言うと、string型の'hello'を'olleh'で変換することです。 各言語内の関数やモジュールを使えばええじゃんと思うかもしれないが、実はこれを実現するためにはいろいろな方法があります。

元記事を表示

sys.path.append()でモジュール探索パスを追加したがインポートができなかったのはpip installしたパッケージが原因だった

# 概要
自作モジュールを相対パスでimportしたく、`sys.path.append(os.path.dirname(__file__)`を入れたのに何故かimportができなかった。

# 結論
pipで入れていたパッケージと自作モジュールで利用していた名前が被っていたため、pipで入れたパッケージを読み込みにいってしまっていた。

# 環境
* Windows10
* miniconda

# 詳細
以下のような構成で自作モジュールを呼び出そうとしたところ、`libs.utils`が見つからないと`ModuleNotFoundError`が発生。

“`
parent_dir/
|- my_modules/
| |- libs/
| |- utils.py
| |- my_module.py
|- controller.py
“`

`controller.py` ⇒ `my_module.py` ⇒ `utils.py`と呼び出す流れ。

## 各モジュールのコード

“`python:controller.py
from my_m

元記事を表示

ABC193 C – Unexpressed から学んだ

https://atcoder.jp/contests/abc193/tasks/abc193_c

![abc193_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/b72e38ad-576b-ab64-f81b-df0d578f780c.png)

うーん。さっぱり分からん。

![abc193_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/4715eb7b-40b8-50e0-9a78-125ed449db09.png)

20分悩んで降参。

なるほど。
**a^2 <= N となるから a <= (N)^(0.5)が言える**。。か。 想定される最大値 N と、想定される最小値 a^b(=a^2) の関係(不等式)から a の条件を導き出している。 ```Unexpressed.py

元記事を表示

【Django】herokuでCloudinaryを使い画像をアップロードする

##herokuの問題点

herokuは画像がアップロードできない仕様。

AWSなら良いのだけど、herokuの方が管理が楽で安い!

そして無料プランもある!

ってことでCloudinaryを使って実装してみる。

## herokuにアドオンを追加
herokuにログインして自分のアプリに移動する。

「Configure Add-ons」→「Find more add-ons」

command + FでCloudinaryを検索。

Image Processingの「Cloudinary – Image and Video Management」内でアドオンを追加できます。

## pip
画像を扱うにはPillowが必要なので入ってなければ入れておく。

“`terminal:terminal
$ pip install Pillow
“`

次にCloudinaryのパッケージを入れる。

“`terminal:terminal
$ pip install django-cloudinary-storage

#動画の場合は
$ pip install dj

元記事を表示

Splunkとkerasを用いた不正アクセス予測検知の仕組み(ディープラーニング構築編)

####やりたいこと
アクセスログをもとに機械学習で不正アクセスを予測する仕組み作る。
[1.Splunkを使い、access.logをCSVに変換](https://qiita.com/Uryy/items/8e923038b41c60cb87a5)
[2.CSVファイルをもとにJupyterLab上で教師データを作る](https://qiita.com/Uryy/items/2066f1377b254e46b774)
[3.ディープラーニングを用いて、予測精度を確かめる  ](https://qiita.com/Uryy/items/104a4e01d386a72dd184)⇦今回の内容

####環境
・JupyterLab 2.1.4 @ AWS Cloud9

元記事を表示

Flask+スクレイピングで記事一覧画面を作ろう③

概要

こちらは前回[Flask+スクレイピングで記事一覧画面を作ろう②](https://qiita.com/Yuthon/items/4c9754b0d14b40122165)の続きです。

テンプレートを作ろう

まずは、前回のFlaskScraping/app.pyに必要なモジュールのインポートを行います。
差分は(-)と(+)で表します。

“`python:FlaskScraping/app.py
# モジュールのインポート
from flask import Flask, (+)render_template
(+)import requests
(+)from bs4 import BeautifulSoup

# Flaskアプリのインスタンスを作成
app = Flask(__name__)

“`

requestsとBeautifulSoupはスクレイピングを行うためのモジュールですね。
render_templateは、簡単に言うと、対応するhtmlファイルを表示することができるという関数です。
後ほど使うので、頭の片

元記事を表示

AIZU ONLINE JUDGE 「ITP I」40問をpythonで解いてみた

本記事では[「レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】」](https://qiita.com/e869120/items/f1c6f98364d1443148b3)で紹介されているAOJの[「Introduction To Programming I」](https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/1)の40問をPythonで解説します。

# [ITP1_1_A Hello World](https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/1/ITP1_1_A)
“`python:ITP1_1_A
print(“Hello world”)
“`
【解説】 `print`関数を使用し、`Hello World`を出力します。

詳しい解説は[こちら](https://tysonblog-whitelabel.com/aizu-online-judge-itp1_1_a)

# [ITP1_1_B X:Cub

元記事を表示

【AtCoder】ABC218をPython3で解説(ABCDE)

ABC218のA-E問題の解説。

https://atcoder.jp/contests/abc218

## 目次
[A – Weather Forecast](#a—weather-forecast)
[B – qwerty](#b—qwerty)
[C – Shapes](#c—shapes)
[D – Rectangles](#d—rectangles)
[E – Destruction](#e—destruction)

## A – Weather Forecast

https://atcoder.jp/contests/abc218/tasks/abc218_a

### 解説

$N$日後の天気予報が晴れ、つまり、`o`かどうかを判定する問題。
$S$の$N-1$文字目が`o`だったら`Yes`。

### コード
“`python
def main():
n = int(input())
s = input()

if s[n-1] == ‘o’:
print(‘Yes’)
else:

元記事を表示

ksnctf #16 MathⅠ

#MathⅠ
https://ksnctf.sweetduet.info/problem/16

RSAで暗号化された文を復号する問題

###RSA暗号
https://ja.wikipedia.org/wiki/RSA暗号
桁数が大きい合成数の素因数分解問題が困難であることを安全性の根拠とした公開鍵暗号の一つ。

#####暗号化
平分を暗号化するには以下の式を計算する必要がある。

“`math
c = m^e\; mod\; n
“`
cは暗号化文、mは平分、eは適当に決める値、nは2つの大きな素数p,qの積であり、これらは自分で設定する。問題では既にこれらの値はわかっている。
暗号化する時には、復号に必要な秘密鍵dを一緒に作成しているが、詳しいことは後述する。

#####復号化
暗号文を復号するには以下の式を計算する必要がある。

“`math
m = c^d\; mod\; n
“`
今回の問題は秘密鍵dを求めることが肝になっている。

###解く
cを復号して平分mを求める問題になっている。
問題をみると、e,n,c,p,qは既に決まっている。

復号化で述べ

元記事を表示

OTHERカテゴリの最新記事