Python3関連のことを調べてみた2023年02月09日

Python3関連のことを調べてみた2023年02月09日

enpit振り返り(by Keisuke)

# 春学期(夏合宿)
## プロダクト名・概要 
 名前は「ココロミエル」.春学期discord上で顔が見えない中,「反応なくて寂しいな」とか「これ声聞こえてるのかな」が多発したことで,なんとかしようというプロダクトだった.
## エレベータピッチ![ココロミエル_リーン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3121621/6d1bfb46-553c-749d-c56a-a5b50d82987d.png)

## 使い方
画像行方不明&ローカルですら動かせないためわかりづらいですが...

– 話したければ「次話したい」ボタンを押す
– なんか寂しいなと思ったら「わいわいしたい」を押す
上記二つは,押したタイミングで他の人の画面に表示される
– 「それな」「いいね」ボタンを押すとボールが降ってきて,それが溜まっていく
## メンバ構成と役割 
毎日同じ割り振りではなかったが,基本的にバックエンドとフロントエンドで分業していた.

– Aさん(プロダクトオーナー)
ほぼバックエンドをやってた.調

元記事を表示

[備忘録] Optunaの探索結果をUMAPで可視化する

ハイパパラメータが3つ以上存在する場合,探索結果の可視化はなかなか難しいです.
今回はUMAPを利用して探索結果の可視化を行います.

“`python
import matplotlib.pyplot as plt

import numpy as np

import optuna

import umap

DIM = 6
SEED = 42
N_SAMPLES = 1000
N_GRID = 50
LB, UB = -5, 5

def func(X: np.ndarray) -> np.ndarray:
return np.sum(X ** 2, axis=-1)

def objective(trial: optuna.Trial) -> float:
X = np.asarray([trial.suggest_float(f”x{d}”, LB, UB) for d in range(DIM)])
return func(X)

def get_mapper():
rng = np.random.RandomState(SEED)

元記事を表示

家庭教師がオンライン授業のためのホワイトボード共有サイトを作ってみた(その2)

## 前提
今回はログインせずにボードを使える機能の実装を行なった。
[前回の記事](“https://qiita.com/esakiryota/items/999a640abda68d49c9ac” “前回の記事”)
[ボードミート](https://board-meet.com/ “ボードミート”)

## 技術
**バックエンド**
— 言語
– Python3

— フレームワーク
– Django 3.0.6

**フロントエンド**
— 言語
– CSS
– Javascript
– HTML

— フレームワーク
– jquery
– materiallize.css

**インフラ**
– AWS EC2
– AWS S3 storage
– AWS Route53

## アーキテクチャー

![スクリーンショット 2022-11-01 18.48.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1860891/9ab885ca-2127-3908-bec2-4ce2e8

元記事を表示

ffmpegの処理中にtkinterのプログレスバーを表示させる(その2: 出力表示の改良)

[前回](https://qiita.com/ytakeda-paleo/items/c3d33aef9d1c715702de)の続きです.

# やりたいこと
– 前回は一行ずつffmpegからの標準出力が表示されるプログレスバーを作った↓
![before.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/736226/a35d301c-e5d9-2339-e1dd-b66fe72662d4.gif)
– これだと,通しで出力を確認することができない.出力内容をコピペすることもできない.
– そこで,コンソールで表示されるときと同じようにテキストボックスに表示させる.
– 完成したもの↓
![Animation.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/736226/6c99cab5-294b-621d-b521-c7d429679462.gif)

## GUIの内容
– ffmpegで処理中に出力されるメッセージ

元記事を表示

5分で作る【VS Code×Docker×Python環境】の作り方

# 概要
VS CodeとDockerのインストールが完了していることを前提に、5分程度でひとまず、Pythonを動かせる状況までもっていきます。**本当に必要最低限の環境だけ**作ります。

VS CodeでDockerを使い、Pythonで開発したいと思ったので、その備忘録として。

## 環境
Windows11です。
あと、VS CodeとDockerDesktopのインストールができている状況を想定しています。

## 事前準備
VS Codeの拡張機能から『Dev Containers』と検索してインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687015/9372edc0-90be-2e36-bbd8-075accc89a83.png)

どこでも良いので、テキトーにフォルダを作ります。
“`
└ .devcontainer/
  ├ devcontainer.json
  └ Dockerfile
“`

そしたら、“`devcontainer.

元記事を表示

【AtCoder】ABC251E Takahashi and Animals Python解説

# はじめに

ABC 251 E 問題 Takahashi and Animals を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。

# E.Takahashi and Animals

[問題ページ](https://atcoder.jp/contests/abc251/tasks/abc251_e)
難易度 : 水色 1227

# 考察

$Ai$ すべてについて 払う,払わないを考えられれば簡単ですが、計算量が $2^N$ となるので間に合いません。

ここで、餌やりがどういうルールであるか理解するために可視化してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3012066/dd18cd7a-6830-717f-21e6-b6085db456d1.png)
つまり **$\ i ≦ k ≦ N\ $ 番目までの動物への餌やりが完了している状態** からは、$i-

元記事を表示

Kaggleに挑戦 Tabular Ordinal Regression with a Wine Quality Dataset?

# はじめに
DNNの回帰タスクをやっています.

特徴全部そのまま放り込んだら下から数えて10番くらいでした(´;ω;`)ウゥゥ
Kaggleは前処理コンペみたいな感じありますね~

というかDeepはモデルより前処理がすっごく大事であるという話ですわ.
前処理を制すものは,Deepを制すってね.さぁ,やっていきましょう.

Kaggele上で公開しているコードは[こちら](https://www.kaggle.com/code/shiraeharuto/dnn-regression/notebook)から.

# Import
必要なライブラリのインポートと,Deviceの指定です.
~~~
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms
from torch.utils.data import TensorDatas

元記事を表示

WEBスクレイピングGUIデスクトップアプリケーション feat.ひよっこフロントエンド

## はしがき
できれば1月中に書きたかったけど寒くてできんかった。
毎日やってる某単純作業が面倒で自動化したいなって思ったのがことの発端。
スクレイピング(今回はブラウザ自動操作)の自動化はすでにできていたけど、CLIでコマンド流すだけなの機械的だなあてことでGUIの作成を考え始める。
今回全て初めて扱った技術なのでこんなの作ったよってのと所感とかを述べたいと思います。

## 実行環境 & 使用技術
– macOS 12.2.1
– Python 3.11.1
– selenium 4.7.2
– tkinter 8.6

## 構成
`構成図`
![attend.py.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3078763/9e3b8c2a-d5c4-65cf-14fb-d92834b7a562.png)

`ディレクトリ構成`
“`
.
├── scraping.py // スクレイピング操作の関数
├── gui.py                  // GUIアプリのUI/

元記事を表示

matplotlibでグラフを作ってOpenCVで好きな画像とアルファブレンドする

# 環境
python 3.9.6
Windows11
# 使用する画像
![221219_26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2134624/55855ad5-d7b4-59de-6275-b3271b5bcb79.jpeg)
# 下準備
下準備にコードを置く場所と同じ階層にアルファブレンドしたい画像を置こう!
# コード
“`python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import cv2

def sin():
fig, ax = plt.subplots()
x = np.linspace(0, 18, 100)
for i in range(1, 10):
ax.plot(x, np.sin(x + i * .5) * (7 – i))
fig.savefig(‘fig.jpg’) # グラフのセーブ

ax = si

元記事を表示

ファイル名が重複しないように自前のタイムスタンプをファイル名に入れるための備忘録メモ

プログラムを実行した結果をプログラムに保存させる時に、ファイル名の重複チェックを入れずにそのまま上書き保存してしまっては目も当てられません。。。:scream: :scream_cat: そこでファイル名が重複しないように自前のタイムスタンプを入れる様にしたのですが、毎度書き方を忘れるため、備忘録メモ。

“`python
from datetime import datetime

today = datetime.now()
tstamp = f'{today.year}{today.month:02}{today.day:02}{today.hour:02}{today.minute:02}{today.second:02}’
file_name = f’hogehoge_{tstamp}’
“`

これで`hogehoge_202302061815`という形式で保存できます。これでも重複が発生する場合は、microsecondまで含めると良いでしょう。(筆者の用途ではsecondまでで十分)

元記事を表示

Kaggleに挑戦 DigitRecognizer?

# はじめに
KaggleのDigitRecognizerタスクの解説です.
全コードを載せているので,参考にしてください.
[KaggeleのNotebook](https://www.kaggle.com/code/shiraeharuto/digitrecognizer-cnn-classification)

# IMPORT
必要なライブラリのImportです.
~~~
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms
from torch.utils.data import TensorDataset
from torch.utils.data import Dataset
from torch.utils.data import DataLoader
# Validation
from torchvision

元記事を表示

【leetcode × Python】任意の英数字から隣り合う2つの文字が同じ型でないことを確認する

# はじめに

以前にも、leetcodeは使用したことがあったのですが、今回、2年ぶりぐらいに解いてみました。
その時は`Easyモード`ですら難しく何時間もかけて解いていました。
当時は、Hintと回答を見ながらやっと解ける感じでした。

そこで今回、久しぶりに`Easyモード`を解いてみることにしました。

# 目次

[1.実際に解いた問題](#1-実際に解いた問題)
[2.私が出した回答がこちら](#2-私が出した回答がこちら)
[3.リファクタリングしていく](#3-リファクタリングしていく)
[4.リファクタリング後のコード](#4-リファクタリング後のコード)
[5.最後に](#5-最後に)

# 1. 実際に解いた問題

leetcodeではランダムに問題が選択できるのですが、そこから`Easy`を選びました
今回解いた問題がこちらです。

https://leetcode.com/problems/reformat-the-string/description/

以下が問題を日本語訳したものです

“`
英数字の文字列sが与えられる(英数字の文字列とは、小文字の

元記事を表示

RollingHashクラスをPythonでつくった

## 例題

https://atcoder.jp/contests/abc284/tasks/abc284_f

https://yukicoder.me/problems/no/2204

## つくったコード

“`Python
“””ローリングハッシュ

文字列にハッシュをかけて1次元の数に置き換えます。
長い文字列でも、一致判定をO(1)くらいでできます。

・使い方
rh=RollingHash(S): インスタンス作成。 計算量: O(len(S))
rh.value(l,r): 半開区間[l,r)のハッシュ値を返します。 計算量: O(1)
rh.merged_string_value(section_list):
半開区間をたくさん入れたリストsection_listについて、
各区間の文字列を連結させてできる文字列のハッシュ値を返します。
計算量: O(len(section_list)) (そんなにやばくない)
rh.same(section_list1,section_list2):
2つの文字列が同じならTrueを、そう

元記事を表示

Python学習、残り日数計算

こんにちはkmdです。
今回はyoutube等で学習用として紹介されていた日数計算について挑戦してみました。

問題)
今年があと何日あるかを
本日の日付から算出して
「今年はあと何日」と
出力するプログラムを作る

“`
import datetime

nenmatsu = datetime.date(2023, 12, 31)
today = datetime.date.today()
hikaku = nenmatsu – today

print(‘今日は’, today)
print(‘今年は残り’, hikaku.days, ‘日です’)
“`

前回のじゃんけんに比べ非常に難易度を落としたのですが、やはりじゃんけんのプログラムは一番最初に行うには難易度が高かったと感じました。

実行結果は
“`
今日は 2023-02-05
今年は残り 329 日です
“`
まだできないのですが、todayのデータをリストか何かに格納してもっと美しく出力できると思いました。

前回の「初めてのPython、じゃんけんゲーム備忘録」でコードを見てくれた方がいたおかげで、修正してく

元記事を表示

ffmpegの処理中にtkinterのプログレスバーを表示させる

初投稿です.よろしくお願いします.
# 概要
– このようなプログレスバーを作る.
![Animation.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/736226/4938462d-6cd7-a7e1-2149-bef9b104f901.gif)

# やりたいこと
– pythonからffmpegを使って動画を処理したい.
– GUI化したい.
## GUIの内容
– ボタンを押すと処理が開始する.
– 処理中はtkinterのプログレスバー(不確定モード)のウインドウがポップアップされる.
– 処理が完了するとプログレスバーのウインドウが自動的に閉じる.

# コード
## NGな例その1
“`python
import os, subprocess
import tkinter as tk
from tkinter import ttk, messagebox

command = “ffmpeg hogehoge” # ffmpegの処理コマンド

def start():

元記事を表示

Djangoの開発で突如出てきた__eq__メソッドとは

## テーマ

私は普段Djangoを用いてCDPの開発を行っています。

そこで遭遇した`__eq__`メソッドについて調べたので備忘録として記載します。

## 環境

||バージョン|
|—|—|
|Django|3.1.1|
|Python|3.8|

※バージョン自体少し古めです。。。

## __eq__メソッドとは

`__eq__`メソッドとは、Pythonに標準で用意されている特殊メソッドのことです。

よく使用されるものは下記のようなものがあります。

– `__init__` → クラスの初期化に使用
– `__str__` → クラスオブジェクトを文字列で表示

上記の他にも多くの特殊メソッドが存在します。

では、`__eq__`はどういったメソッドなのでしょうか。

結論から言うと、**クラスオブジェクトを何によって等価であるとみなすかを設定するメソッド**です。

通常オブジェクトを比較する場合、下記のようにメモリアドレスから判断します。

“`py
class Person:
def __init__(self, first_name:

元記事を表示

Massive MIMOチャネルの角度領域における局所性を確認するシミュレータ

# 0. はじめに
**Massive MIMO(mMIMO)は、移動体無線通信システムにおける周波数利用効率や電力効率の向上、セルに収容可能なユーザ数の増加などが期待される技術である。**
mMIMOによってセルに収容される複数ユーザの通信品質を高めるため、ユーザ間の信号干渉を補償する技術(干渉補償技術)として、LSやMMSEを用いたものからDeep Learningを用いたものまで様々提案されている[1]。
干渉補償技術は、基地局で利用されるmMIMOとユーザの間に構築される電波伝搬 (mMIMO Channel)の推定値を入力とする。**mMIMO Channelの特性を利用した干渉補償技術を開発することで、通信品質の劣化を抑えながらの計算コスト低減が期待される。**
**本稿では、文献[1]で指摘されるmMIMO Channelの角度領域における局所性をパラメータを変えながら確認できるシミュレータ**を紹介する。

# 1. システムと伝搬モデル
システムと伝搬モデルを紹介する。

## 1.1 システム
下記は、文献[1]のFig.1を抜粋したものである。
Fig.1の左は、

元記事を表示

PythonでFastAPI+gunicornを使用しBasic認証をかけたAPIサーバを立てる

## 環境
Amazon Lightsail(LAMP)
以前別の用途で作ったのを再利用しただけなので、LAMPであることに特に意味はない

## uvicornでAPIサーバーを動かす

Basic認証をかけたかったので、[FastAPIでBasic認証 – Qiita](https://qiita.com/taumu/items/e448259a132bdbacf31c)の通りbasic_auth.pyを用意し、API部分を下記の通り実装
host=”0.0.0.0″を指定することでローカル以外でもアクセスできるようにしている

“`python:myserver.py
import uvicorn
from fastapi import FastAPI, Depends
from basic_auth import verify_from_api
from fastapi.responses import FileResponse

app = FastAPI()

@app.get(“/”)
async def root(_ = Depends(verify_from

元記事を表示

enumerate

### はじめに
leetcodeの問題を解いていて解けたものの計算量がO(n^2)になってしまいました。
解説にO(n)のものがあり、`enumerate`を使っていて感動したので残しておきます。

### enumerate
forループを使うとき引数にインテラブルオブジェクトを指定すると要素とindex番号を取得できる。

*インテラブルオブジェクトとは、forループを使って取り出すようなオブジェクトのこと。
リスト、辞書、タプル、文字列など

`enumerate`の使い方は以下。
“`python
nums = [1, 10, 100]
for i, num in enumerate(nums):
print(i, num)
“`
実行結果は
“`
0 1
1 10
2 100
“`

### 使った結果
使う前はfor文の中にfor文を入れてこんな感じになってました。
“`python
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:

元記事を表示

初めてのPython、じゃんけんゲーム

こんにちはkmdと申します。

初投稿になります。
タイトル通り今回はPythonで簡単なじゃんけんのプログラムを組みました。
私は普段ネットワークの畑にいるためプログラムについてほぼ全くの無知です…

自動化やRPAを最近職場で見ることがあり、私も興味を持ったためプログラミングへ挑戦することにしました。
Udemyで少し勉強して基本的な?もので書けたと思います。

今回はさわり程度でアルゴリズムを理解するのに苦労しました。

“`janken.py
import random

print(‘じゃんけんをします。 手を選んでね \n’)

global human
global com

def nyuryoku():
global human
human = int(input(‘1:グー 2:チョキ 3:パー \n —> ‘))
if human not in [1, 2, 3]:
print(‘1か2か3を入力してください’)
nyuryoku()
else:
janken()

def

元記事を表示

OTHERカテゴリの最新記事