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

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

ABC219 D問題解説 (python)

## 概要
AtcoderのABC219のD問題が(おそらく)あと一歩のところで解けず、非常に悔しい思いをしたので、
忘れないよう記事にまとめました。

### 問題文

> N 種類の弁当が、それぞれ 1 個ずつ売られています。
i=1,2,…,N について、i 種類目の弁当には Ai個のたこ焼きと Bi個のたい焼きが入っています。
高橋君は、 X 個以上のたこ焼きと Y 個以上のたい焼きを食べたいです。
高橋君がいくつかの弁当を選んで買うことで、 X 個以上のたこ焼きと Y 個以上のたい焼きを手に入れることが可能かどうか判定して下さい。また、可能な場合はそのために高橋君が購入しなければならない弁当の個数の最小値を求めて下さい。
各種類の弁当は 1 個しか売られていないため、同じ種類の弁当を 2 個以上購入することは出来ないことに注意して下さい。

### 制約
>$1≤N≤300$
$1≤X,Y≤300$
$1≤Ai,Bi≤300$
入力はすべて整数

引用元:[Atcoder-ABC219 D問題](https://atcoder.jp/contests/abc219/tasks

元記事を表示

[Python] Tweepyモジュールで、Tweeterのツイートを自動でretweetするBOTを超簡単に作成する方法

Tweeterで、自動リツイートするBOTを作る方法です。
(今後、徐々に肉付けしていきます。多分。。。とりあえず、R1と言う事で。)
皆様のお役に立てると嬉しいです!

<はじめに>
自分はPython使いなので、コードに関して詳しく説明しようと思ったのですが、書いている途中で、「pythonのコードを全く知らない人」でも、見よう見まねでBOTが作れる様な記事にしようと思い直し、大幅に書き直しました。
プログラムの事を知らなくても、PCヘビーユーザー以上なら設定可能と思います。
(勿論、Python学習者に人にも少しは役に立つと願いたいです。)

<全体のイメージ/状況>
私自身は、TweeterではアカウントAとBを保有しております。
Aの方が本アカウントで、現在、フォローワー1万人を目指し、活動中です。(笑)
そこで、Bの方をBOTアカウントとして、本アカのツイートをひたすらリツイートさせようと思っております。(Bは、サブアカウントです。)
イメージとしては、こんな感じです。
![全体イメージ.jpg](https://qiita-image-store.s3.ap-northe

元記事を表示

イントロスペクションについて(オブジェクトの調査)

**pythonの本を読んでいたら、イントロスペクションという単語が急に出てきたので、ネットで調べたものをまとました。**
#イントロスペクションの意味
英語ではintrospectionと書かれ、日本語で「内省」と訳されます。あまり生活にはなじみのない単語ですが、辞書を引いてみると内省は「自分自身の思考や振る舞いについて深く考えること」と書かれています。

プログラミング言語においてのintrospectionは、**プログラムの実行時にオブジェクトの性質や型を調べること**です。
プログラミング言語で書かれたオブジェクトについて内省することだと私は解釈しています。
イントロスペクションは多くのプログラミング言語に実装されています。
#リフレクション(reflection)との違い
似たような意味としてリフレクションが存在します。
リフレクションは、プログラムの実行時にオブジェクトの値、メタデータ、性質、関数を操作することです
#例(python)
pythonは全てがオブジェクトなので、イントロスペクション機能を持つ関数を使うことで多くの事を調べることができます。
イントロスペクシ

元記事を表示

Python で OpenWeather API へアクセスして気象情報を取得する

## Goals

* OpenWeather API へ Python からアクセスできるようになる
* 取得した JSON データを整形して出力できるようになる

## Back ground

仕事で Python を書く機会がありそうなので、
Python の素振りがてら、API を叩くコードを書いてみようと思いました。

## OpenWeather

OpenWeather は気象情報を閲覧するモバイルアプリなどを公開しているサービスです。
別途、 API も無料で (※) 公開されているため、そちらを今回は利用します。
https://openweathermap.org/

※ 確認はしていませんが、この手の API は商用利用等では有料となる可能性があるため、よく確認の上使用してください。

## API の仕様

今回は現在の気象データを取得するため、以下の API を使用します。
[Current weather data](https://openweathermap.org/current)

## API Key の取得

API へアクセスする

元記事を表示

pyenvでpython環境構築時、PythonPATHが/usr/bin/pythonから切り替わらない時の対処法

pyenvでのpython3環境構築で、
pyenv globalをしてもpythonのpathが変更されない問題でちょっと詰まったので、
解決手法をメモしておきます。

基本的には[こちらの記事]( https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a )を参考に、pyenvのセットアップを行いました。

## 問題点

“`pyenv versions“`では変更されているのに

“`
~ ❯❯❯ pyenv versions
system
3.8.12
* 3.9.7 (set by /usr/local/var/pyenv/version)
“`

“python –version“で確認したところディフォルトバージョンから変更できていない。
python のpathも変更されていない。

“`
~ ❯❯❯ python –version
Python 2.7.16
~ ❯❯❯ which python
/usr/bin/python
“`

## 解決方法

“`

元記事を表示

環境変数の設定(Mac)

# はじめに
環境変数とは、OS上で設定できる変数。tokenなどのファイルに記述したくない情報を、OSに保存しておくことで機密性が保たれる。pythonの場合, osライブラリを用いることで環境変数を呼び出すことができる。
以下、利用例及び設定方法を説明する。

# 利用例

– tokenを環境変数で設定。ファイルに記述すると、情報が漏洩してしまうので良くない。

# 設定方法

## 一時的なセッションの間、環境変数を有効にしたい場合

仮想環境(pyenvなど)をactivateしてから、ターミナルで以下を実行。

`export “YOUR_TOKEN”=”xxxxxx”`

OS全体に環境変数を設定すると、重複の判別が困難になるので、仮想環境ないだけで利用する環境変数を設定する。

なお、**同じ環境変数名に異なる値を入れた場合、上書きされる**。

## 永続的に有効にしたい場合

シェルに応じて、.zshrcファイルや.bashhrcファイルなどを作成して、そこに同様にexport文を記述。

以下のように、シェルスクリプトを実行。

`source .zshrc`

元記事を表示

Flaskでバックグラウンド実行

[PythonでThreadを使うflaskサンプルを作ってみた \- Qiita](https://qiita.com/juri-t/items/5cec3822e168215aff49)
の練習とブラウザで操作できるようにstart,stopボタンをつけてみた。

uwsgiなどで並列プロセス化するとjobs変数共有できないので、別途ジョブキューのceleryなどを使ったプロセス作る必要がある。

“`py:app.py
from datetime import datetime
from flask import Flask, make_response
from time import sleep
import threading

app = Flask(__name__)

class MyThread(threading.Thread):
def __init__(self):
super(MyThread, self).__init__()
self.stop_event = threading.Event()

元記事を表示

かの有名なFrog問題に奮闘する

#Topic
– 前の記事に引き続き,お世話になっている「問題解決能力を鍛える!アルゴリズムとデータ構造」関連の話.
– Frog問題(AtCoder Educational DP Contest A – Frog 1)の別解を考えたい

## 別解??
Frog問題は,[AtCoder Educational DP Contest A – Frog 1](https://atcoder.jp/contests/dp/tasks/dp_a)を参考されたい.
ここでは,自分の考え方を記述しておく.(実装はまだできていない)

“`Python
#xはコスト,iは段数
func(x,i):
if i == n-1: return
func(x + abs(h[i+1] – h[i]), i+1)
func(x + abs(h[i+2] – h[i]), i+2)

#初期値は0で,段数は0段目から始まるからx,iに0を代入
func(0,0)
“`

実現したいこととしては,再帰で0段目からN段目までのコストを全て計算させること.
ただ,分かってもらえるとおりこ

元記事を表示

pythonのbottleでちょっとしたAPIサーバを作る

ちょっとしたAPIサーバがほしいとき、pythonで手軽に作ることができます。

“`requirements.txt
bottle==0.12.18
“`

“`app.py
# -*- coding:utf-8 -*-
from bottle import (get, HTTPResponse, default_app)
from wsgiref.simple_server import WSGIServer, make_server
from socketserver import ThreadingMixIn
import json

class ThreadingWSGIServer(ThreadingMixIn, WSGIServer):
“””
マルチスレッドなWSGIServer
“””
pass

@get(‘/active’)
def is_active():
return ‘OK’

@get(‘/testget’)
def test_get():
dummy_response = {
‘v

元記事を表示

Gradient Descent – Beginner’s Guide

#### Introduction.

When starting machine learning in university, one of the firstly learn a thing is a gradient descent. Gradient descent is a viral optimization algorithm utilized to train machine learning.
It is used in neural network modeling to achieve better results by returning the most minor possible error.

I’m not going to theory part in this article. Let’s see how it works using PyTorch.

“`gd.py
import torch
import matplotlib.pyplot as plt
torch.manual_seed(1989);
“`
First, let’s

元記事を表示

【競プロ典型90問】010の解説(python)

## 概要
[競プロ典型90問](https://atcoder.jp/contests/typical90)の解説記事です。
解説の画像を見ても分からない(~~理解力が足りない~~)ことが多々あったので、後で解き直した際に確認できるようまとめました。

※順次、全ての問題の解説記事を挙げていく予定です。
※★5以上の問題は難易度的に後回しにしているため、投稿時期が遅くなる可能性があります。(~~代わりに丁寧に解説してくれる方いたらぜひお願いします~~)

## [問題010-Score Sum Queries](https://atcoder.jp/contests/typical90/tasks/typical90_i)

### 問題概要
N人の生徒が2つの組に分けられている時、各クラスの学籍番号L~R番の合計点を求める。
これをQ個のクエリにて行う。

### 解き方
まず初めに、愚直にQ個のクエリ1つ1つに対して、L~R番までの合計を都度求める方法が考えられますが、
この考えでは、L~R番までの合計を求める処理で、最大N回、
これを最大Q回行うと $O(QN)$ となり、TL

元記事を表示

【pytorch備忘録】multi-target not supported at なんちゃら/ClassNLLCriterion.cu:15というCrossEntropyLoss()のエラー対策

絶賛pytorch勉強中の人間の備忘録です。
あるデータに対しては動いていたはずの学習/検証のための関数を別のデータに適用したら“`CrossEntropyLoss()“`の部分が“`multi-target not supported at なんちゃら/ClassNLLCriterion.cu:15“`というエラーを吐くようになりました。
# 修正前
(不慣れで冗長なコードですすみません・・・・)

“`train_valid_loop.pyの一部
def train_valid_loop(
train_loader, valid_loader, valid_data_tensor, valid_label_tensor, model,
n_epoch, optimizer):
train_acc_list = []
train_loss_list = []
valid_acc_list = []
valid_loss_list = []
auc_score_list = []

for epoch in ra

元記事を表示

Selenium Tips

仕事でSeleniumを扱い、色々と調べたことを備忘録も兼ねて書いておく。
言語はPython。

# 実行環境
[この記事](https://qiita.com/tennis_lover/items/4151d2be551fb239b56d)に書いてある通り、Docker上でSeleniumを動かしている。

# シークレットモードで実行
“` set_secretmode_sample.py
# Options の設定(ブラウザ設定)
options = webdriver.ChromeOptions()
options.add_argument(‘–incognito’) # シークレットモードに設定する
“`

# SeleniumでJavascriptを実行する
“` execute_script_sample.py
# Selenium Server に接続する
driver = webdriver.Remote(command_executor=’http://localhost:4444/wd/hub’,
de

元記事を表示

【Python Django】マイグレーション(DB)をロールバック、元に戻す

Djangoはマイグレーションファイルからテーブルの定義変更や追加する機能がDjango ORマッパーにあります。さらに「ロールバック」つまり、マイグレーションファイルをもとにデータベースを前の定義に戻すこともできます。

用途としては、

– チームで開発してて、migrateした後に「こっちに修正した方が良くない?」と言われたので修正必要
– migrateしたけど、定義抜けてたからロールバック(戻して)定義追加し直したい

などに使えます。
ある程度Djangoで開発していくなら必須の知識ですね!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260345/e01c93ce-0bc6-1984-da1d-354054ad3484.png)

DjangoのDB・モデルの基礎は以下のように書いてますので良ければ

https://qiita.com/Bashi50/items/280bc341eeec5d7f8797

今回以下の記事のmodel定義を使用して記事作成しました。

元記事を表示

Windows10でtensorflow-gpuを動作させよう

# 読者のターゲット
Win10でdeeplearningしたい
Anacondaの仮想環境内で深層学習の環境を作りたい
GPU持ってる(NVIDIA製)
Python3.7, Tensorflow 2.6.0

# 環境構築の前に
Anacondaは入っている -> まだの場合は[こちら](https://www.anaconda.com/products/individual-d#Downloads)
NVIDIA デベロッパーアカウントを作っている -> まだの場合は[こちら](https://developer.nvidia.com/login)
GeForce のドライバをダウンロードしている -> まだの場合は[こちら](https://www.nvidia.co.jp/Download/index.aspx?lang=jp)
cuda ツールキットもダウンロードしている -> まだの場合は[こちら](https://developer.nvidia.com/cuda-toolkit)

## PythonでGPUを使うために
### cuDNNのダウンロード
cuDNNダ

元記事を表示

Python3: Kinesis Data Stream の使い方

次のページを参考にしました。
[Boto3 documentation -> Kinesis](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/kinesis.html)

ストリームを作成

“`py:create_stream.py
#! /usr/bin/python
#
# create_stream.py
#
# Sep/16/2021
#
import boto3
#
name_stream=’sample_sep16′
#
client = boto3.client(‘kinesis’)
response = client.create_stream(
StreamName=name_stream,
ShardCount=1
)
#
“`

ストリームをリスト

“`py:list_streams.py
#! /usr/bin/python
#
# list_streams.py
#
# Sep/16/2021
#
import bo

元記事を表示

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初心者を脱出するための実践レシピ10選

# はじめに

Axrossを運営している藤原です。

**[Axross](https://axross-recipe.com/recipes)** は、エンジニアの”教育”と”実務”のギャップに着目し、「学んだが活用できない人を減らしたい」という想いで、ソフトバンク社内起業制度にて立ち上げたサービスです。

現役エンジニアによる実践ノウハウが”レシピ”として教材化されており、Pythonプログラミングを活用して実際の業務に近いテーマで、動くものを作りながら学ぶことができます。

Axross:https://axross-recipe.com
公式Twitter:https://twitter.com/Axross_SBiv
![Axrossアイキャッチ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/9f500e0e-a759-20e2-bb8b-480bbcfaaf9b.png)
# Pythonについて
Pythonは、AI・機械学習の技術領域で活用され、近年人気なオープンソースの

元記事を表示

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

元記事を表示

ketosで音響解析その2

#はじめに
前回の記事でデータベースを作成したので今回はそれを基に検出器を作成していきます。

必要なデータはここにあります。
前回作成したデータベースや今回のコードも入っています。

#分類器のトレーニング
まずはチュートリアルで使用されるランダムシードを定義する必要があるようです。

“`py
import numpy as np
np.random.seed(1000)

import tensorflow as tf
tf.random.set_seed(2000)
“`

##インポートする
今回使うものです。

“`

元記事を表示

OTHERカテゴリの最新記事