Python関連のことを調べてみた2022年11月02日

Python関連のことを調べてみた2022年11月02日

float型の数値をprintでファイル出力

# pythonでprintを使ってファイル出力する

## 困ったこと
oitput用のファイルにfloat型の数値を `f.write()`で出力させようとすると
“`:error
write() argument must be str, not float
“`
とエラーが出てしまう.

## 解決策
`print`の引数でoutputファイルを指定する.
“`python:sample.py
print(s, file=outputfile)
“`

元記事を表示

SQLAlchemy SELECT時のサブクエリの使い方 PostgreSQL

備忘録

SELECT側のカラムとしてサブクエリで情報を引っ張りたい時は、サブクエリを別のクエリとして設定する必要がある。

“`python:subquery.py
sub_query_sum = local_session.query(func.count(Posts.slack_channel_id))\
.filter(Posts.slack_ws_id== Channels.slack_ws_id,Posts.slack_channel_id == Channels.slack_channel_id_from,Posts.created_date>=start_this_month,Posts.created_date<=end_this_month)\ .group_by(Posts.slack_channel_id)\ .label('post_count') ``` 複数項目を返そうとしたらエラーになったので、サブクエリで返せるのは一つのみっぽい(調べてないが filter部分で

元記事を表示

Python+FastAPIのAPIテストをPytestで実行してみる

PythonでFastAPIを使ったAPIをテストしてみる

1.適当なAPIを用意
“`main.py
import requests,json
from fastapi import FastAPI
app = FastAPI()

#単純なメッセージ返却
@app.get(“/”)
async def Hello():
return {“message”:”Hello”}

#クエリパラメータ
@app.get(“/zipcode”)
async def ZipCode(zipcode:int = 0):
url = f’https://zipcloud.ibsnet.co.jp/api/search?zipcode={zipcode}’
r = requests.get(url)
print(r.text)
return json.loads(r.text)
“`

2.テスト記述
“` tests/test_main.py

from fastapi.testclient import TestClient
from main i

元記事を表示

Python+FastAPIからRequestsにより別APIを呼び出してみる。uvicornでホスティング

PythonとFastAPIを使いAPIを作成し、
getで別のAPIを呼ぶサンプルです。

1.以下をpip installしておく
requests
FastAPI
uvicorn

2.main.pyファイルを作成し、以下を記載
※サンプルとして〒番号を取得するAPIを内部で呼び出している

“`main.py
import requests,json
from fastapi import FastAPI
app = FastAPI()

@app.get(“/zipcode”)
async def ZipCode(zipcode:int = 0):
url = f’https://zipcloud.ibsnet.co.jp/api/search?zipcode={zipcode}’
r = requests.get(url)
print(r.text)
return {“message”: json.loads(r.text)}
“`

3.以下コマンドをmain.pyのある階層で実行
“`
python3 -m uvicorn ma

元記事を表示

Automatic Mixed Precision (AMP):PyTorchでの学習を高速化

AMPを使うとNaNに出くわしてうまく学習できない場合があったので,そのための備忘録と,AMP自体のまとめ.あまり検索してもでてこない[注意点](#注意点)があったので,参考になればうれしいです.

## Averaged Mixed Precision(AMP)とは

PyTorch中の一部の計算を,通常float32で計算するところ,float16で計算して,高速化するための技術です.そんなことやると性能が下がるのでは?という疑いもありますが,[NVIDIAのページ](https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html)とかを見ると,あまり下がらなさそうです.
基本的には,計算も計算結果もfloat16で持ちますが,パラメタはfloat32で持つので,テスト時にfloat16でしか計算できない,ということは起こりません.(全部float16で持つこともできますが,性能の低下が起きます.)

## 使い方
[PyTorchのドキュメント](https://pytorc

元記事を表示

Get number from string in python

“`python
import sys
import re

a = sys.argv[1]
print(a)
m1 = re.search(“[^0-9\.]”, a) # str
m2 = re.search(“[0-9\.]”, a) # num
if m1 and m2:
print(“m1.start(),m2.start():”,m1.start(),m2.start())
if m1.start() > m2.start():
ret = a[:m1.start()]
else:
ret = a[m2.start():]
print(“ret:”,ret)
m3 = re.search(“[^0-9\.]”, ret)
if m3:
ret = ret[:m3.start()]
elif m1:
# only str
ret = “”
elif m2:
# only num
ret = a
print(“ret:”,ret)
“`

元記事を表示

【twitterAPI】超簡単!twitterAPI取得方法まとめてみた〜

# TwitterAPIの登録
### アカウント作成
twitterアカウントを作成またはログインする
(今回は初めてtwitterAPIを扱うので新しく作っておくことをお勧めします)
メアドの登録を忘れないように!

### TwitterDeveloperに登録
下のURLにアクセスする
https://developer.twitter.com/en
ログインしてなかったらログインする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/dce2b4af-3f8a-9f92-30f4-9df3589308c4.png)
右上の「Developer Portal」をクリック
![スクリーンショット 2022-11-01 21.21.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/847a78fc-8885-b700-a727-f90b5eeab815.png)
なんか出

元記事を表示

【Python】4300桁以上が想定されるint型変数の桁数を求める

## やりたいこと

– Pythonでint型の桁数を求めたい

## 普通のやり方

一般的に`str`に直した後で`len()`関数に入れる方法が知られている。
整数型をそのまま`len()`に入れることができればいいのだが、メソッドが存在しないため、変換する必要がある。

### やってみる

簡単に実装できる

“`py
num = 12345
length = len(str(num)))
print(length)
# 5
“`

### 問題点

この方法だと、v3.10.7、v3.9.14、v3.8.14、v3.7.14より新しいバージョンで、4300桁以上の整数型がエラーになる。

“`py:Python3.10.6
num = 9999**9999
length = len(str(num))
print(length)
# 39996
“`

“`py:Python3.11
num = 9999**9999
length = len(str(num))
print(length)
# Traceback (most recent call l

元記事を表示

[Django]たまに見かけるQオブジェクト

# Qオブジェクトってなに?
最近、業務中にこんな感じのコードに出会いました。
“`python:例文
Contract.objects.filter(Q(price__gt=100)|Q(date__year = 2022))
“`
なんとなく`or`を使って絞り込みたいの時に使われることは知っていたのですが、もう少し深ぼって調べてみました。

## 1.ドキュメントによると

>Q object (django.db.models.Q) is an object used to encapsulate a collection of keyword arguments. These keyword arguments are specified as in “Field lookups” above.

訳すると、
Qオブジェクトはキーワード引数の集まりをカプセル化するときに使われるオブジェクト。これらのキーワード引数は、上の `Field lookups` のように指定される。
ということらしいです。

`Field lookups`というのは、
“`django:Fiel

元記事を表示

【二分法とは】pythonプログラムを用いて具体的に解説する

## 二分法とは
二分法は、**方程式 $f(x) =0$ 数値計算で機械的に解くための計算手法**のこと。
解が含まれる区間を何度も二分して狭めていくことで、数値的に解を求められる。

### 前提条件
– 関数 $f(x)$が連続であること
→連続なら必ず解を求められる

### 視覚的に考えてみる
![IMG_57C5984A625B-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2932655/a0f3e200-2dab-1d35-ff42-8a0bc2c63faf.jpeg)

解が含まれる区間$[a,b]$を適当に取る。
区間内で$f(x)$の符号が反転するため、$f(a)$と$f(b)$は必ず異符号になるはずである。
$aとb$の中点を新たに$c$とし、区間を二分する。
二分された区間のうち解が含まれている方をさらに二分し、これを繰り返す。
どんどん区間が狭くなり、やがて収束する。

### アルゴリズム
1. 解が含まれる$x$の区間$[a, b]$を$f(a)\times f(

元記事を表示

Python Pandas基礎⑥ -データ集計(pivot_table)-

### 初めに
PythonのPandasについて初学者なりにまとめたいと思います。
学習に使っているのはこちらのキノコードです。

https://kino-code.com/category/introductory-course-pandas/

JupyterLabを使用します。

### 使用するExcelファイル
こちらを[リンク先を保存して](http://kino-code.com/wp-content/uploads/2020/08/sample.xlsx)ローカルに落として利用しています。

### データ集計
#### 前準備
jupyterlabを起動し、エクセルファイルをカレントディレクトリに格納。Pandasをimportし、表示数を変更します。
その後、read_excelで読み込みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1744893/bd52b8bf-f76b-bad0-883c-e427e9faa7e8.png)

#### pivot_

元記事を表示

機械学習初心者の備忘録 1

※ 完全な初心者による記事です。※

というわけで僕がKaggleのコンペに参加していく中で、へえこんな便利な方法があるんだと感じた基礎技術?を備忘録として記録していきます。

今日はlambda関数の使い方です。
個人的にlambda関数ってなかなか理解しづらいんですよね。。。

| date | day |
| —- | — |
| 2022-11-15 | Saturday |
| 2022-11-16 | Sunday |
| 2022-11-17 | Monday |

こんな感じのデータがあったとしましょう。
ここに新しくweekendというカラムを追加して、SaturdayかSundayなら1、それ以外なら0を入れたいと思います。

これを実現するコードがコチラ。

“`python
df[‘weekend’] = df[‘day’].apply(lambda x: 1 if (x == ‘Saturday’) or (x == ‘Sunday’) else 0)
“`

| date | day | weekend |
| —- | –

元記事を表示

お絵かきロジックをPythonで解く

# はじめに

縦横に仕切られたマス目を塗りつぶしてイラストを完成させる、お絵かきロジックというパズルがあります。詳しい説明は[Wikipedia](https://ja.wikipedia.org/wiki/%E3%81%8A%E7%B5%B5%E3%81%8B%E3%81%8D%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF)に任せますので、ここでは簡単な説明を。縦横の各列に注目したとき、連続して塗りつぶすマス目が何個あるかという情報がヒントとして与えられます。ヒントをもとに「このマス目は必ず塗りつぶして良い」「このマス目は必ず塗りつぶされない」ということを徐々に確定させていくことで、イラストの全体像があぶりだされるというパズルです。

先日、興味本位でお絵かきロジックを解くプログラムを書いてみました。内容はGoogle Colabを使って[こちら](https://drive.google.com/file/d/1O1kkzZELURdK-XnTm3Y8vYwVsJy9UdUP/view?usp=sharing)から公開しています。この記事では、プログラム

元記事を表示

細かいけど伝えたかった先輩のコードレビュー

### はじめに

新人のごろ、先輩からコードレビューを受ける際、よく耳にしたのが、
「うーん、細かいがおれならこう書くよ。まあ、間違ってはないけど」

当初は、そのありがたみがよくわからず、しぶしぶ直していましたが、
今になって、先輩の「細かいけど伝えたい」気持ちがわかったような。

### 先輩の指摘事項(Python例)

#### シングルクォートか、ダブルクォートか

– 自分
“`Python
print(‘I\’ll be back’)
“`

– 先輩
“`Python
print(“I’ll be back”)
“`

エスケープ不要な書き方に。

#### メソッド名は長くてもよい

– 自分
“`Python
def check_file(file_name: str) -> bool:
# check if a file exists
“`

– 先輩
“`Python
def check_if_file_exist(file_name: str) -> bool:
“`

メソッド名から機能を読み取れるように(コメントより効果的)。

元記事を表示

Laravel sailでPythonを使う

自作のポートフォリオをLaravelで制作中にPythonのライブラリを使って処理を実行したかったので、挑戦してみました。
いくつかのつまづきポイントがあったのでまとめ

## 開発環境
PHP(8.0.2)
Laravel(9.19)
Python(3.8.10)

### Pythonの実行はexec関数
PythonをLaravel上で使用するのに、いろいろ調べたところ、PHPのexec関数で実行できるということでした。
まずはPythonファイルを作成。
私はappディレクトリ内にpythonディレクトリを作りその中にファイルを作りました。

“`python
import sys
import pandas_datareader.data as web

code = sys.argv[1]+’.T’
start_date = sys.argv[2]
start_open_or_close = sys.argv[3]
end_date = sys.argv[4]
end_open_or_close = sys.argv[5]

df = web.DataReader(

元記事を表示

長期インターンを通じて学んだこと

## **自己紹介**
– 関東私立大学に通う3年生
– インターン参加から半年程
– プログラミングは独学で基礎を勉強した程度

## **なぜ応募したのか**
– エンジニアの仕事の雰囲気を知るため
– 個人でプログラミングをしたことがありますが、これがどのようにして仕事になるのか想像がつかなかったので長期インターンの応募を考えました。

## **体験した業務内容**
– 顧客情報のデータ分析
– 膨大な顧客データから必要なデータを取り出し、SQLにて組み合わせて整形することが主な仕事です。
– アプリに用いられるレコメンドシステムの評価・開発
– レコメンドシステムとは、利用者の興味のありそうなモノやサービスを推薦するシステムのことを指します。ユーザのデータを分析・抽出することでユーザの動向を解析し、システムに取り入れることが主な仕事です。pythonやSQLを使用しました。
– 動画配信サービスのサーバーサイドのシステム開発
– AWSを利用して、動画配信サービスの機能の追加や修正をすることが主な仕事です。pythonにて実装しました。

元記事を表示

【Python】四捨五入処理の落とし穴

# 目的
 本記事の目的は筆者自身がPythonの四捨五入に躓き、学習と同時に作成している。
また、Pythonの四捨五入するための構文を控えておくための記事である。

# Pythonの四捨五入はどのように記述すれば良いか
 まずは結論としてPythonにおける四捨五入記述を下に記す。
decimalモジュールを使用して四捨五入を処理している。
“`Python:pythonにおける四捨五入の記述例①:小数点以下第1位を四捨五入
from decimal import Decimal, ROUND_HALF_UP # 「import *」 でも可
a = 2.5
round_a = Decimal(a).quantize(Decimal(‘0’), rounding=ROUND_HALF_UP)
print(a, round_a)
“`
“`python
2.5 3
“`
“`python:pythonにおける四捨五入の記述例②:小数点以下第3位を四捨五入
from decimal import Decimal, ROUND_HALF_UP
b = 1.005
ro

元記事を表示

活性化関数を色々いじってみる

[前回](https://qiita.com/Soichir0/items/b0b64ffd197c55a6ec54)、[前々回](https://qiita.com/Soichir0/items/356e871b32beeada24c0)と、ニューラルネットの挙動を理解するために色々アニメーションを作ってきました。

https://qiita.com/Soichir0/items/b0b64ffd197c55a6ec54

https://qiita.com/Soichir0/items/356e871b32beeada24c0

今回は、前回の検討に引き続き、ニューラルネットワークの中で非線形的な挙動を生み出す活性化関数について、面白い活性化関数がないか考察をしてみたいと思います。

![animation2_sin.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107669/b81d5f68-ab9f-aba4-c02b-fc8e217207f0.gif)

# 活性化関数とは

ニューラルネ

元記事を表示

配合問題をPulPとPySIMPLEとGurobiで解く

# CBC

https://github.com/coin-or/Cbc
CBCソルバをPythonで利用するにはPuLPを使用する。

## PuLPとは

PuLPはPythonで書かれたLPモデラー。
PuLPはMPSまたはLPファイルを生成し、
GLPK, COIN-OR CLP/CBC, CPLEX, GUROBI, MOSEK, XPRESS, CHOCO, MIPCL, SCIPを呼び出して線形問題を解くことができる。

## インストール

“`sh
$ pip install pulp
“`

## 対応Pythonバージョン

* Python 2.7
* Python >= 3.4.

## 使用例

新しい変数を作成するには、LpVariable()を使用します。

0 <= x <= 3: ```py x = LpVariable("x", 0, 3) ``` 0 <= y <= 1: ```py y = LpVariable("y", 0, 1) ``` LpProblem() を使って、新しい問題を作成します。myProblem "を作成。

元記事を表示

CAPTCHAソリューションの自動化

公式サイトの説明によると:

「2captcha.comは手動の画像認識によるCAPTCHA突破サービスです。こちらではスキャンしたドキュメント、レターヘッド、CAPTCHAからリアルタイムでテキストを認識する必要がある人と、画面からテキストを入力してお金を稼ぎたい人を見つけることができます。

The system employs English-speaking and Russian-speaking workers.
このシステムでは英語を話す作業者とロシア語を話す作業者が働いています。

アンチCAPTCHAサービス、2captcha.comは、pixodrom、antigate、anti-captchaなどのサービスと同等の標準 APIをサポートするだけでなく、自動化との戦いのあらゆる段階で必要となる高度な機能を続々と追加しています。2captcha APIはReCaptcha v2(写真をクリックする必要がある)、ClickCaptcha(特定のポイントをクリックする必要がある)、および Rotatecaptcha(適切に回転する必要があるFunCaptchaおよびその他

元記事を表示

OTHERカテゴリの最新記事