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

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

pyenv-winで対応していないバージョンのPythonをインストールする方法

# 1. はじめに
急な話ですが、2021年10月にPython3.10がリリースされましたね!(今更感がありますが…)
個人的には新機能の構造的パターンマッチング(C言語でいうswitch文みたいなやつ)が気になっており触ってみたいと思っていました。
私はWindows環境でPythonを使用する際はpyenv-winを使っているので、さっそく pyenv install -l コマンドでバージョンの一覧を確認!
※今回の記事では、pyenvの基本操作の説明はスキップします。ご了承ください…m(_ _)m

“`python
# まずはpyenvのバージョンを確認!!
> pyenv –version
pyenv 2.64.11

# pyenv install -l を実行
> pyenv install -l
3.10.0a1-win32 # Python3.10は、ここから
3.10.0a1 # ↑
… # |
3.10.0b2-win32

元記事を表示

Python マルチスレッドで同一サイトにHTTPリクエストするときのスクレイピングTip

# はじめに

マルチスレッドでスクレイピング処理をしているときに、同一サイトで短時間多重リクエストしでかしそうになったので予防方法をメモする(別スレッドでリクエストするとスリープの意味をなさないので)

# 方法

リクエスト前後でスレッドをロックする

ロッククラスは以下の通りなので別スレッドから自由にロック、アンロックできる
>プリミティブロック (primitive lock) オブジェクトを実装しているクラスです。スレッドが一度ロックを獲得すると、それ以後のロック獲得の試みはロックが解放されるまでブロックします。どのスレッドでもロックを解放できます。

https://docs.python.org/ja/3/library/threading.html#threading.Lock

“`python
import time
import threading
import requests

lock = threading.Lock()

def http_req(url):
global lock
lock.aquire()
res =

元記事を表示

ABC240 A~E問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder

ABC240(AtCoder Beginner Contest 240) A~E問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。

その他のABC解説、動画などは以下です。

https://qiita.com/sano192/items/54accd04df62242b70f0

##A – Edge Checker

https://atcoder.jp/contests/abc240/tasks/abc240_a

図を見れば分かる通り1個前の数字と1個後の数字が線で結ばれています。
しかし「1」については1個前が0でなく10になります。
以上をまとめて条件分岐にします。

・a=1
 ・b=2または10→「Yes」
 ・それ以外→「No」
・それ以外(aが1でない)
 ・b=a+1→「Yes」
 ・それ以外→「No」

「または」という条件は「or」を使います。

「Yes」「No」は文字列なので出力の際、”Yes”,”No”とダブルクオーテーションをつけてください。

入力の受け取り、出力がわからない方は以下の記事を参考にしてください。

https://q

元記事を表示

DOBOT×AI 分類結果が一定確率以下の場合、無視する

以下のテキストでは、AIを用いた画像認識により対象物を分類し、ロボットアームにより仕分けを行っています。
・[DOBOT Magician AIx画像認識xロボットアーム制御](https://afrel.co.jp/dobot/education-product/)

分類した結果として、最も該当している(それらしい、確率が高い)ラベルが出力されるため、ぎりぎり該当したようなものも学習したいずれかのラベルに分類されてしまいます。そのような状態を回避したい場合、学習データをもっと集めて、より良いモデルを学習させる方法もありますが、今回の記事では、該当している確率が低いものは無視するようにプログラムを修正したいと思います。

# 修正前
“`Python:classifer.py
# 分類する(3-10)
result = model.predict_classes(image)
proba = model.predict_proba(image)
result_num = int(res

元記事を表示

DOBOT×AI ネジやボルトを認識して仕分ける

以下のテキストのソースコードは、判別対象を吸引カップで移動させるようになっています。
・[DOBOT Magician AIx画像認識xロボットアーム制御](https://afrel.co.jp/dobot/education-product/)

対象物が小さい、あるいは細長く、吸引カップでは保持できないことがあります。
そのような場合、DOBOT magicianに付属する空気式グリッパーで掴む必要があります。

以下の記事でグリッパーで掴めるように修正方法を示しました。
・[DOBOT×AI 判別対象をグリッパーで掴む](https://qiita.com/shimamotosan/items/d15dde18889b8dba2204)

また以下の記事で、細長いLEGOパーツを対象物とし、パーツの向きを取得して、掴みやすいようにグリッパーを回転させるようにプログラムを修正しました。
・[DOBOT×AI LEGOパーツを認識して仕分ける](https://qiita.com/shimamotosan/items/98de5729ee260eb8a678)

今回の記事では上記

元記事を表示

DOBOT×AI LEGOパーツを認識して仕分ける

以下のテキストのソースコードは、判別対象を吸引カップで移動させるようになっています。
・[DOBOT Magician AIx画像認識xロボットアーム制御](https://afrel.co.jp/dobot/education-product/)

対象物が小さい、あるいは細長く、吸引カップでは保持できないことがあります。
そのような場合、DOBOT magicianに付属する空気式グリッパーで掴む必要があります。

以下の記事でグリッパーで掴めるように修正方法を示しましたが、対象物の向きによっては掴むことができません。
・[DOBOT×AI 判別対象をグリッパーで掴む](https://qiita.com/shimamotosan/items/d15dde18889b8dba2204)

本記事では、細長いLEGOパーツを対象物とし、どのLEGOパーツかを認識することに加えて、パーツの向きを取得して、掴みやすいようにグリッパーを回転させるようにプログラムを修正したいと思います。

# 修正前

“`python:classifier.py
from common import

元記事を表示

Lambda関数のプロジェクトを外部モジュール含めZip化する

指定された`lambda_function.py`のあるディレクトリのパスから、その直下にある`requirements.txt`に書かれた外部モジュールをこのディレクトリにインストールします。

## コード

“`rust
use std::env;
use std::process::{Command};

fn run(command: &str, arguments: Vec<&str>) {
Command::new(command)
.args(arguments)
.output()
.expect(“failed to execute process”);
}

fn main() {
let args: Vec = env::args().collect();

let path = &args[1];
let requirements_path = &format!(“./{}/requirements.txt”, path);

run(“pip3”,

元記事を表示

tetrisを題材にpythonを学べるツールを作成した話

### 取り組み背景
・プログラミング学習で挫折する人を減らしたい
・文法を学ぶだけでは使用イメージが湧かず挫折しがちである
・しかし、いきなり競技プログラミング等を始めるのはハードルが高いと感じる

### tetrisを題材にpythonを学ぶ
・リポジトリはこちら?https://github.com/seigot/tetris

mojikyo45_640-2.gif

・tetrisは誰もがルールを知っている(はず)
・pythonでtetrisを動かす経験をすることでpythonが楽しく自然に身につく(はず)

### 技術要素
・最適な一手の探索を実装する
  数手先読み、盤面評価
  ゲーム木、深さ優先探索
・いくつかの難易度設定により、上記実装の難しさを調節可能
・tetris

元記事を表示

Pipfileで対象ファイルのhashの変更を無視する

## 背景

– 自作のpythonパッケージ(tar.gz)を別プロジェクトでpipenv installして使いたい
– パッケージをビルドし直す度に、ファイルのhashが変わるためPipfile.lockに記載されているhashと不一致になるためpipenv installでエラーになる
– Pipfileにパラメータを追加するなどして回避したい

## 結果
– Pipfileのパラメータでは対応できなかった
– 回避策として、pipenv installする際に、`–skip-lock`パラメータを使うようにした

## pipenv install –skip-lock
参考:https://pipenv-ja.readthedocs.io/ja/translate-ja/basics.html#pipenv-install

> –skip-lock — Pipfile.lock を無視し、 Pipfile を使ってインストールします。 それに加えて、 Pipfile の変更部分を Pipfile.lock へは反映しません。
動作としては、
– Pipfile.l

元記事を表示

JupyerのnotebookをnbconvertでPDFに変換する

## notebookを共有するなら、やっぱりPDF

### 導入に際して

Jupyter環境の有無にかかわらず、notebookを他者と共有したい。そんな時にnotebookを別形式のファイルに変換できるパッケージ**nbconvert**は超便利です。

Githubにアップロードするという手もありますが、アカウントが必要ですし、部外者も閲覧OKかどうかといったことも、配慮が必要になってきます。

LaTeXやMarkdownという選択肢もありますが、デバイスを問わず閲覧可能な形式と言ったら、やはりPDFが一番に挙げられます。

今回も例によって、以前CloudShellで構築した環境を利用します。

https://qiita.com/Q-Lazy/items/ef61ce36b3f47ade91fd

通常は既にインストールされているはずです。

“`shell
$ ~/miniconda3/bin/pip list | grep nbconvert
nbconvert 6.4.2
“`

万が一未インストールであっても、すぐに出来ます。

`

元記事を表示

LSTMで東京都のコロナ感染者数を予測する

明日はいったい何人の方がコロナに感染してしまうのだろうか。そう思うと夜も眠れない。いったいこの不安を解消するにはどうしたらいいのだろうか…。そうだ。明日の感染者数を予測すれば良いのだ。そうすればその日のうちに次の日の感染者数を知ることができ、夜もぐっすり眠ることができる。ということで今回はLSTMで東京都のコロナ感染者数を予測してみる。(速報で流れてくるのがだいたい東京の感染者数なので東京にしました。)

#LSTMとは
時系列データを扱う場合に用いられるニューラルネットワークの一種。だいたいこういう未来を予測するときに使われるやつ。詳しくはググってください(すいません)。

#環境
Google Colaboratory
keras:2.8.0
tensorflow:2.8.0

#データセット
https://www3.nhk.or.jp/news/special/coronavirus/data/pref/tokyo.html

こちらからデータを頂いて、そこから東京の情報と、カラム名を別のエクセルファイルにコピーし、「コロナ感染者数-東京.xlsx」として保存した。

元記事を表示

【AtCoder解説】PythonでABC240のA,B,C,D,E問題を制する!

**ABC240**の**A,B,C,D,E問題**を、**Python3**でなるべく丁寧に解説していきます。

ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。

– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、後の問題に残せる時間が増える

ご質問・ご指摘は**コメント**か**ツイッター**、**マシュマロ**、Discordサーバーまでお気軽にどうぞ!

**Twitter: [u2dayo](https://twitter.com/u2dayo)**
**マシュマロ: https://marshmallow-qa.com/u2dayo**
**ほしいものリスト: https://www.amazon.jp/hz/wishlist/ls/2T9IQ8IK9ID19?ref_=wl_share**
**Discordサーバー(質問や記事の感想・リクエストなどどうぞ!) : https://discord.gg/jZ8pkPRRMT**
よかったら**LGTM**

元記事を表示

ゼロから始めるPython開発環境構築

# はじめに
初投稿です。
最近新しいPCを購入したので、ゼロからPythonの開発環境を構築する必要が出てきました。
いざとりかかろうと思うと手順等全然覚えていなかったので、備忘録的な意味も含めて記事に残そうと思います。
加えて環境構築の上で改善点やオススメ等がありましたらコメントしていただけると嬉しいです。

# 概要
この記事では「昨日新しいPC買って何も触ってない!」という前提から

* Pythonのインストール
* venvによる仮想環境の構築
* VSCodeのインストール/環境構築
* Blackの導入

という流れで書いていきます。
**※自分のPCがWindowsなのでWindows前提で話を進めていきます。**

# Pythonのインストール
以下からPythonをインストールします。

https://www.python.org/

Downloads > Windowsから3.9.10をインストールしていきます。

![スクリーンショット 2022-02-21 174512.png](https://qiita-image-store.s3.ap-nort

元記事を表示

yukicoder No.485 方程式のお勉強

今回も [yukicoder](https://yukicoder.me/) の問題紹介・解説を行っていきたいと思います!

$4$ 問目に紹介する問題はこちら!

## 概要
問題 : [No.485 方程式のお勉強](https://yukicoder.me/problems/no/485)
レベル : ★
実行時間制限 : 2000 ms

問題文へのリンク↓↓

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


## 問題文

> 九郎くんは、方程式を解くことにハマりはじめています。

> 今日は $Ax = B$ 型の方程式をたくさん解きます。

> 九郎くんは学校で小数や分数を習っていないので、解 $x$ が整数にならない場合には、問題を解くことが出来ません。

> 家庭教師のあなたの仕事は、九郎くんが問題を解く前に答えを作ることです。

> 九郎くんが解ける問題ならば解 $x$ を、解けない問題ならば “NO” を出力して下さい。

## 制約

– $-100 \leq A \leq -1$ または $1 \leq A \leq 1

元記事を表示

yukicoder No.1012 荷物収集

今回も [yukicoder](https://yukicoder.me/) の問題紹介・解説を行っていきたいと思います!

$3$ 問目に紹介する問題はこちら!

## 概要
問題 : [No.1012 荷物収集](https://yukicoder.me/problems/no/1012)
レベル : ★★★
実行時間制限 : 2000 ms

問題文へのリンク↓↓

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


## 問題文

> 数直線上に $N$ 個の荷物が並んでいます、荷物 $i (1 \leq i \leq N)$ は位置 $x_i$ にあり、重さは $w_i$ です。

> 荷物を別の位置に運ぶためには、$|$(移動後の位置) – (移動前の位置)$|$ $\times$ (荷物の重さ) と等しいコストが必要です。

> $Q$ 個の値 $X_1, X_2, … , X_Q$ が与えられます。各 $i (1 \leq i \leq Q)$ に対して、すべての荷物を位置 $X_i$ に運ぶための必要最低限の合計コストをそ

元記事を表示

特徴量の選択について勉強したことをまとめてみた

# 分散(variance)が小さい特徴量の削除
分散がかなり小さい場合、その特徴量は一定に近いため、どのモデルに対しても特徴量として加える価値がない(まあ、当たり前)。scikit-learnに実装されている`VarianceThreshold`で実現できる。

[公式チュートリアル](https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.VarianceThreshold.html#sklearn.feature_selection.VarianceThreshold)

“`python
import pandas as pd
from sklearn.feature_selection import VarianceThreshold

# データフレームの作成
data = pd.DataFrame([[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]],

元記事を表示

MATLAB x OpenAI Gym: Reinforcement Learning App for Easiest Reinforcement Learning experience!

# Introduction
:::note info
Note that
[The original article written in Japanese is found here.](https://qiita.com/HYCE/items/29e490ab7a9706c2e2e4)
:::

The **Reinforcement Learning Designer App**, released with MATLAB R2021a, provides an intuitive way to perform complex parts of Reinforcement Learning such as:

– Configurat

元記事を表示

Pythonコーティングテクニックメモ

他のプログラミング言語の経験者がちょっとだけPythonの知識を学んで、コーティングを始めると漏れやすい便利なテクニックをちょちょいまとめました。

“`memo.py
#変数の値交換
x,y = 1,2
y,x = x,y
print(x,y) #2 1

#リスト内の全項目と比較
z = 0
print(z in [x,y]) #False
print(z not in [x,y]) #True

#for文やif文でリストを定義する
list = [i for i in range(3,10) if i%2 == 0]
print(list) #[4, 6, 8]

#リストの項目数と同じ数の変数にまとめて値を代入する
str_list = [“a”,”b”,”c”]
a,b,c = str_list
print(a,b,c) #a b c

#リスト合併
str_list = [*str_list,*[“d”,”e”]]
print(str_list) #[‘a’, ‘b’, ‘c’, ‘d’, ‘e’]

#リストの項目の値を変数と可変長引数に代入
s,*l = str_l

元記事を表示

【Gradient】無料のGPUクラウドサービス

## 背景
Google Colaboratoryを使っていて「Colabでの使用量上限に達したため、現在GPUに接続できません。」と表示されて制限がかかってしまったため、他に良いGPUクラウドサービスがないか探していた。そのときに「[Gradient](https://gradient.run/)」というサービスをみつけたのでここで紹介する。

すぐに使う場合は「[実際に使ってみる](https://qiita.com/drafts/e855d26f40c6bac97f16/edit#%E5%AE%9F%E9%9A%9B%E3%81%AB%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B)」にジャンプ。

## Gradientについて
[Gradient Docs](https://docs.paperspace.com/gradient/)より一部引用・翻訳する。
### Welcome to Gradient!
> Gradientは、機械学習モデルの開発、トレーニング、デプロイを簡素化する[Paperspace](https://www

元記事を表示

Pandasユーザーガイド「カテゴリデータ」(公式ドキュメント日本語訳)

本記事は、Pandas の公式ドキュメントの[User Guide – Categorical data](https://pandas.pydata.org/pandas-docs/stable/user_guide/categorical.html)を機械翻訳した後、一部の不自然な文章を手直ししたものである。

誤訳の指摘・代訳案・質問等があればコメント欄や編集リクエストでお願いします。

# カテゴリデータ

ここでは、Rの`factor`との簡単な比較を交えて、pandasのカテゴリデータ型を紹介します。

カテゴリ型`Categoricals`は、統計学におけるカテゴリ変数に対応するpandasのデータ型です。カテゴリ変数は、限られた、通常は固定された数の可能な値(`categories`、Rでは`levels`)を取ります。例えば、性別・社会階級・血液型・所属する国・観測時間・リッカート尺度による評価などです。

統計的カテゴリ変数とは対照的に、カテゴリデータは順序を持つかもしれません(たとえば、「強くそう思う」対「そう思う」、「最初の観察」対「2番目の観察」)。ただし数値

元記事を表示

OTHERカテゴリの最新記事