Python3関連のことを調べてみた2022年07月25日

Python3関連のことを調べてみた2022年07月25日

LightGBMのコードを読み解くのに必要だった知識をまとめてみた

LightGBMのコードを読み解く必要があり、調べた内容をまとめました。

## LightGBMとは

[NIPS2017読み会](https://www.slideshare.net/tkm2261/nips2017-lightgbm-a-highly-efficient-gradient-boosting-decision-tree)
[LightGBMの理論のまとめ](https://nigimitama.hatenablog.jp/entry/2021/01/16/212601)

GBDT(勾配ブースティング決定木)のフレームワーク
動きが早いかつ精度高く人気らしい

GOSSとEFBが重要らしいけどちゃんと理解するのは保留

## 使用されているパラメータ

### boosting_type

boostingはアンサンブル手法のこと
LightGBMで選択できるのは下記の4つ

[lightgbm.LGBMClassifier](https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMCl

元記事を表示

【JavaScript・HTML・(Python)】tableにあるボタンを押した行をモーダル上で削除する

### ※注意!!
タイトルでは、「削除する」とありますが、記事に書いているのは、**tableの1行をボタンを押してモーダルを出す→削除する手前まで!!!** です。
削除機能実装については書いていませんのでご了承ください。

## 本記事の目的
1. JavaScriptを使って「欲しい!!」と思った**テーブルの行の情報を取得**できるようになる
1. ボタンをクリックして、**クリックした行の情報を取得**できるようになる
1. 上から降ってきた画面(モーダル)上のボタンを押して、プログラムを実行する手前まで実装することができる

の3つです!

## 目次
1. 実装した機能
1. この記事を書こうとした経緯
1. 具体的な実装方法
1. 参考にしたサイト

## 1. 実装した機能

今回実装したい機能は、こんな感じです。
![delete_event_category.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/782282/676d34a9-8de8-4300-822a-e4db89

元記事を表示

過去問精選 10 問 (AtCoder Beginners Selection)解説〜Python編〜[自分用メモ]

# ◎3問目 ABC081B – Shift only

> [B – Shift only](https://atcoder.jp/contests/abc081/tasks/abc081_b)
**問題文**
黒板に N 個の正の整数 A1,…,AN が書かれています.
すぬけ君は,黒板に書かれている整数がすべて偶数であるとき,次の操作を行うことができます.
黒板に書かれている整数すべてを,2 で割ったものに置き換える.
すぬけ君は最大で何回操作を行うことができるかを求めてください.
**制約**
1≤N≤200
1≤Ai≤109
**入力**
入力は以下の形式で標準入力から与えられる。
N
A1 A2 … AN
**出力**
すぬけ君は最大で何回操作を行うことができるかを出力せよ.

“`python:自分が書いたコード
n=int(input())
a = list(map(int,input().split()))

“””必要な関数等

・全て偶数であった回数をカウントする変数。
・配列の何個目かカウントする変数。

“””

“””必要な処理

1. 偶数かどうか

元記事を表示

Atcoder ABC261

# ABC261
## A – [Intersection](https://atcoder.jp/contests/abc261/tasks/abc261_a)
memo:
空白区切りの入力をmapをもちいて変数に代入する
“`
a, b, c, d = map(int, input().split())
“`
反省点:
大小関係を場合分けするだけの問題だったが時間がかかってしまった考えられる場合を丁寧に数え上げることが大切

“`python:ans.py
a, b, c, d = map(int, input().split())

if a < c: l_1 = min(b-c, d-c) if l_1 >= 0:
print(l_1)
else:
print(0)
elif a == c:
print(min(b-a, d-c))
else:
l_2 = min(d-a, b-a)
if l_2 >= 0:
print(l_2)
else:
print(0)
“`

## B – [Tournament

元記事を表示

python3 和集合と積集合

# set型を使う
set型を使って和集合と積集合をもとめます。set型を作るときは{}で囲います。
“`python
s = {1,2,3}
“`
set型の特徴は順番と重複が無視されます。
# 集合演算子
set型に集合演算子を使うと和集合や積集合が求められます。
| 和集合
& 積集合
# コード
まずは和集合から
“`python
s = {1,2,3,4,5,5}#重複は無視される
t = {2,3}

union = s|t#集合sとtの和集合
print(union)
“`
出力
“`
{1, 2, 3, 4, 5}
“`
積集合
“`python
s = {1,2,3,4,5,5}#重複は無視される
t = {2,3}

intarsection = s & t#sとtの積集合
print(intarsection)
“`
出力
“`
{2, 3}
“`

元記事を表示

AtCoder Beginner Contest 復習用(随時更新)〜Python編〜

# 2022/07/23
https://atcoder.jp/contests/abc261
## B – Tournament Result
“`python
N=int(input())
A=[input()for i in range(N)]

for i in range(N):
for j in range(N):
if i==j:continue
if A[i][j]==”W”:
if A[j][i]!=”L”:
print(“incorrect”)
exit()
elif A[i][j]==”D”:
if A[j][i]!=”D”:
print(“incorrect”)
exit()
elif A[i][j]==”L”:
if A[j][i]!=”W”:
print(“incorrect”)
exit()
print(“correct”)
“`

# AtCoder Beginner Contest

元記事を表示

巡回セールスマン問題at国立

# はじめに
私が通ってる一橋大学は国立市にあるのですが、国立市は街が碁盤の目のように整備されています。
![2022-07-22 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488423/741b174c-bec0-26a5-e731-1e040e581706.png)
(Google Mapより引用)
これを見た瞬間思いました。巡回セールスマン問題にぴったり!
(試験勉強の一環なので暖かい目で見てください)
# 巡回セールスマン問題とは
巡回セールスマン問題とは、セールスマンがいくつかの都市を一回ずつすべて通って出発点に戻ってくる最短経路を求める組み合わせ最適化問題です。都市の数をnとすると組み合わせは(n-1)!/2通りあるので、nの値が大きくなると莫大な計算量になります。ということで厳密解ではなく近似解を求めようというわけです。
# 実践
## 問題設定
今回はスタート地点は特に設定せず、国立市の10か所を巡ります。
![2022-07-22 (2).png](https://qii

元記事を表示

【Python】ワイルドカードを使ってローカルファイル郡を取得しよう

globモジュールを使ってローカルに存在するファイル郡を取得する方法を記載します。

## globモジュールとは

Unixシェルが使用する規則に従って、指定されたパターンに合致するパス名をすべて見つけることができます。

## 使い方

まずglobをimportします。glob自体は最初から含まれているため、pipでインストールする必要はありません。

“`python
import glob
“`

.pdfと記載されたファイルを取得するには、以下のように記載します。

“`python
import glob

glob.glob(‘*.pdf’)
“`

出力結果は以下です。

“`python
[‘1.pdf’, ‘3.pdf’, ‘2.pdf’]
“`

.pdfとついたファイルが全て取得できました。
リスト型で取得されるため、1つずつ処理したい場合は、for文で処理する必要があります。

“`python
import glob
files = glob.glob(‘*.pdf’)
for file in files:
print(file)
“`

元記事を表示

GAE + Python(Flask)でHello Worldまの3ステップ

# GAE + Python(Flask)でHello Worldまの3ステップ
前提条件
・GAEをホストするプロジェクトが存在する
・請求先アカウント作成済み
・Cloud SDKインストール済み

## ①AppEngineアプリを初期化
### GCPコンソールで操作する場合
・リソースリストの中からAppEngineを選択する。
・アプリケーションを作成ボタンを押す。
・画面に従ってリージョンを選択する

### コマンドラインで操作する場合
・gcloud app create –project=[YOUR_PROJECT_ID]
を実行
・表示された指示に従ってリージョンを選択する

## ②ローカル環境でアプリを作成する
今回はPythonのフレームワークFlaskを使います。
以下のような構成で作成
root
│ .gcloudignore
│ app.yaml
│ main.py
│ requirements.txt

└─templates
| index.html

“`app.yaml
#GAEの設定ファイル。
#インスタン

元記事を表示

Numbaは爆速だが、Dict(辞書型)は遅い

Numbaの高速ぶりには感謝しております。

下記サイトでもNumba使われてますが、Numbaが断然速い。本PCでもJavaScriptコードでは約3秒。Numbaは掲載記事通りのパラなら3.5秒程度。fastmathやparallelパラ付けで0.7秒位。断然速い。
https://itnext.io/compare-c-js-python-python-numba-php7-php8-and-golang-in-prime-number-calculation-55e82b6f82a9

PythonのコードをよりNumbaへ置き換えたいのですがDictがあると高速化はできていません。
わかる方がいらしたら教えて頂けると幸いです。

### キーは数字/Numba有り
– NoPythonモードでビルドできます

“`python
import numpy as np
from numba import njit
import time
start = time.time()

@njit(cache=True, parallel=True, fastmath=True)
d

元記事を表示

python3 思い出しメモ

# 本記事について
私自身がpython3について思い出したり、基本構文を参考にするためのメモです。

# おまじない
“`python:おまじない
# coding: utf-8
“`

# コメントアウト
“`python:コメントアウト
# コメントアウトできます

”’
複数行のコメントアウトが可能
複数行のコメントアウトが可能
”’
“`

# print
“`python:print
# 数値
print(数値)

# 文字列
print(“文字列”)

# 改行しない
print(xxx, end=””)

# 改行
print()

#********************************** f文字 **********************************
# 参考サイト:https://note.nkmk.me/python-f-strings/
# 記述方法 「123 and abc」と表示
# 「””」「”」どちらでもOK
num = 123
word = ‘abc’

1. print(‘{} and {}’.form

元記事を表示

PyenvとVSCodeでpython3.6のコードをデバッグしようとしたらできなかった

# 症状
PyenvでPython3.6.8にした上で、VSCodeでデバッグしようとしたが、一瞬デバッグのツールバーが出ただけで動かなかった

# 対処法
一番楽なのはPyenvで使うPythonのバージョンを3.7.0以上に上げることです
~~試してないですが、[pdb](https://docs.python.org/ja/3.6/library/pdb.html#module-pdb)を使う方法も多分いけるはず(注意:バージョンに合ったドキュメントを読んでください)~~
追記:[pdb](https://docs.python.org/ja/3.6/library/pdb.html#module-pdb)を試したらいけました(バージョンに合ったドキュメントを読んで下さい)

他にも方法はありそうですが、具体的には言えません(理由は後述)

# 原因考察
完全には判明していないので考察です
だらだらと書き連ねるだけなので、上の対処法で済む人は読まなくていいと思います

まず、Pyenvに問題がありそうだと思ったので、3.6.8を再インストールしたり(治らなかった)、色々なバー

元記事を表示

Python3: DynamoDB の scan

次に記述してある制約条件を回避する方法です。
[scan(**kwargs)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB.Client.scan)

“`text
If the total number of scanned items exceeds
the maximum dataset size limit of 1 MB,
the scan stops
“`

“`py:scan_id.py
#! /usr/bin/python
#
# scan_id.py
#
# Jul/22/2022
# ——————————————————————–
import sys
import json
import boto3

# —————————————————-

元記事を表示

AWS S3のCSV(Shift JIS)をLambda+pandasで読み込んでみた

windowsユーザー経由で上がるファイルはsjisなことが多く、csvの文字コードがUTF-8じゃないが故に
“`
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x83 in position 0
“`
といったあるあるエラーをS3ファイル->Lambda pandasで解決してみました。

問題はCSVがUTF-8でないことはもちろんですが、もう1つはS3のレスが“`StreamingBody“`なところ。
既存ファイルをUTF-8で上げなおしてくれなんて言えないのでシステムで読み込む方法を模索。
今回のケースでは、
“`python
pandas.read_csv(response, encoding=”shift-jis”)
とか
pandas.read_csv(response, encoding =”cp932″)
“`
と単純にぶっ込んでも同じエラーになりました。

そこで、
“`python
with codecs.open(“file/to/path”, “r”, “Shift-JIS”, “i

元記事を表示

Django Formクラスのprefixの紹介

# はじめに

DjangoでFormを使ったviewを作ってて以下のような不便を感じたことはありませんか?
「1つのviewに2つのFormを表示してるんだけど、同じname属性を持ったinputが2つできちゃって、POSTがわかりずらい」
こんな時に役に立つのが、Formのインスタンス作成時に指定できるprefixです

# コードの紹介

## サンプルとして定義したmodels.pyとforms.py

今回はModelFormでサンプルを示すので、事前にmodels.pyとそれに基づいたforms.pyを定義しますね

“`python:models.py
from django.db import models

# Create your models here.
class TestModel(models.Model):
name = models.CharField(max_length=100)

class SampleModel(models.Model):
name = models.CharField(max_length=100)

元記事を表示

Raspberry Pi におけるネットワークの設定とnumpyとsounddeviceを利用するまでの設定

# はじめに
Raspberry Piの環境がぶっ壊れたので新しく環境を構築しました。
# IPアドレスの設定
`/etc/dhcpcd.conf`というファイルに書き込むことで設定できます。
1. `sudo nano /etc/dhcpcd.conf`で内容を編集
1. `sudo reboot yes`で再起動
### 例
“`
interface eth0
static ip_address=
static routers=
static domain_name_servers=
static domain_search=
noipv6
“`

オプションの意味は`dhcp-options`と基本的には同じだそうなので、下記リンクを参考にしてください。例えば`domain_name_servers`について知りたい場合は`domain-name-servers`の項を見てみると情報を得ることができます。

https://linuxjm.osdn.jp/html/dhcp/man5/dhcp-op

元記事を表示

DynamoDB のデータを web で表示

DynamoDB のデータを web で表示する方法です。
JSON に変換してから、web で表示します。

## JSON への変換 ##

“`py:dynamo_scan.py
#! /usr/bin/python
#
# dynamo_scan.py
#
# Jul/21/2022
# ——————————————————————–
import sys
import json
import boto3
from decimal import Decimal

# ——————————————————————–
def decimal_default_proc(obj):
if isinstance(obj, Decimal):
return float(obj)
raise TypeError
# —————————-

元記事を表示

pythonでutf-8の文字コードを使って正規表現で特定の文字(文字コード)が含まれるか判定

### タイトルの内容を実現しようとした背景から書きます

## 背景
#### やりたかったこと
例として、『ゼロ幅スペース』(UTF-8 :「E2 80 8B」)などがファイル中に含まれているかチェックしたかった

“あ”のような通常の文字であれば、ソースコードに書けますが
『ゼロ幅スペース』の場合は書いてしまうと(たとえコメントを書いていても)
わかりにくいと思い、「この文字コードを指定している」と明示しようと
考えた次第です。

それに加えて、入力データ中でチェックしたい文字コードは『ゼロ幅スペース』だけではないと判断できたので、文字コードの範囲を指定して**正規表現**でチェックをしようと考えました。

#### なぜ文字コード(utf-8)で指定しようとしたか
想定していない文字コードが文字化けをしたときに、xddコマンドで調べると表示されるのはutf-8のコードだった。

文字化けした
 -> xxdコマンドで原因となる文字コードを特定
  -> utf-8で表示された文字コードをpythonでチェックしたい

#### ネックになった部分
・utf-8を

元記事を表示

threadingをやめてasyncio&aiohttpで楽にPythonスクレイピングを行う

効率的なスクレイピングを行うにはリクエストとレスポンス間の待ち時間をなくすこと。これを実現するためにはthreadingモジュールでマルチスレッドか、asyncモジュールで並列処理をするかだ。

マルチスレッドは気軽に実装できる反面、デバッグが困難になる。asyncの非同期処理はコード量がやや増えるが、デバッグが楽。

この記事を呼んで我に返った

https://qiita.com/Toyo_m/items/992b0dcf765ad3082d0b

よし、threading使うのやめて、async使おうってことで試作したコードが以下

やっていることは、リクエストをしてスリープを1秒間を5回実行する(※スリープの理由は逮捕は嫌なので)

ネット環境によるのだろうけど、5回で2秒近くの処理時間の差が生まれる

“`python3
import aiohttp
import asyncio
import time
import requests

url = ‘https://qiita.com/osorezugoing/items/4ea5249c43c0ba8b89aa’
st

元記事を表示

NumPyのインポートエラーでつまづいた

#### 概要
最近Pythonを学び始めた初心者です。
学習を進めるにあたってnumpyというライブラリを利用しようとした際に躓いたので、解決に至ったまでを書き残そうと思います。同じような状況の方は試してみてもらえればと思います。

#### 環境
Windows 11
vscode: 1.69.2
Python: 3.9.12
Anaconda:4.12.0

#### 1.インストールされているか確認した
VSCodeを使って NumPyを使うには、Python Extension Packをインストールする必要があるとのこと。Extension MarketPlaseから入手可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1744893/8076527b-30a4-118d-51b5-cb832e111968.png)

#### 2.環境変数の確認
VScodeを開き、ファイル→ユーザー設定→設定に行き、Python.PythonPathと入力すると、、、あれ、何も

元記事を表示

OTHERカテゴリの最新記事