Python関連のことを調べてみた2021年08月25日

Python関連のことを調べてみた2021年08月25日

AtCoder Beginner Contest 215 (B~D)

# はじめに
初心者がAtCoderの問題についてまとめています.
もし誤りがありましたら,コメントをお願いします.

# B – lon2(N)
## 問題
正整数$N$が与えられ,$2^k \leqq N$となる最大の整数$k$を求める.

## 制約
$N$は$1 \leqq N \leqq 10^{18}$を満たす整数.

## ポイント
この問題は難しくはないが,$log$を用いて計算するより,整数のまま計算したほうが良い.

## 解答
“`python
n = int(input())
k = 0
while n // 2:
n = n // 2
k += 1
print(k)
“`

# C – One More aab aba baa
## 問題
文字列$S$の各文字列を並べ替えて作ることが可能な文字列を順序式に全て列挙したとき,前から$K$番目にくる文字列を求めよ

## 制約
– $1 \leqq |S| \leqq 8$
– $S$は英小文字のみからなる
– $S$の各文字を並べ替えてできる文字列は$K$種類以上存在する

## ポイント

元記事を表示

VSCode上のJupyter Notebookはブレークポイントを使ったデバッグができるようになっていた

# はじめに
最近のVSCodeのアップデートで,Jupyter NotebookのUIが変更されました.その変更でブレークポイントが設定できるようになっていて(下図参照),もしかしてNotebookでもブレークポイントを使ったデバッグができるのでは?と思い,調べてみると[こちらのYouTube動画](https://www.youtube.com/watch?v=d2Yz4tivhPg)に行き着き,なんとかデバッグできたので共有したいと思います.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253935/797454fe-f8b9-22d5-1e8c-e51e389dc87b.png)

今までは,ブレークポイントを使ったデバッグを行うには,一度[こちらの記事](https://qiita.com/hanzawak/items/cb292f9c8e1fbe19fb64)のように`.py`に変換しないといけなかったですが,その必要もなくなったようです(下図).

![image.pn

元記事を表示

駄菓子の値段を予測し、自腹を切る人を決める

**<アルゴリズム問題シリーズ(Python)>**

#1.はじめに
同一ファイル内で入力から出力を実施する方法としてはhttps://qiita.com/ajim/items/4d350710ba70056f5f6f を参考にしました。

“`py
import sys
import io

_INPUT = “””\
5 4
1
3
4
5
“””
sys.stdin = io.StringIO(_INPUT)
“`
・`sys`モジュールはインタプリタで使用・管理している変数や、インタプリタの動作に深く関連する関数を定義しています。`sys.stdin`はインタプリタが使用する、それぞれ標準入力、標準出力、および標準エラー出力の ファイルオブジェクト であり、stdin は (input() の呼び出しも含む) すべての対話型入力に使われます。https://docs.python.org/ja/3/library/sys.html
・io モジュールは様々な種類の I/O を扱う Python の主要な機能を提供しています。StringIO オブジェクトはインメモリーの

元記事を表示

PythonでMetaTrader5のデータを取得する

#はじめに
FXや株式、先物トレードのプラットフォームとして知られているMetaTrader5(MT5)には、Pythonから接続するためのモジュールが用意されています。

https://www.mql5.com/ja/docs/integration/python_metatrader5

関数リストやサンプルプログラムがあるので、何となくできることがわかるかと思います。

今回、MT5からFXヒストリカルデータを取得して簡単な分析をしてみたので、メモしておきます。

#動作環境
* Python 3.8.11
* OANDA MetaTrader5 build 2982

Python、MT5の導入については省略します。MT5は基本的にどこの業者でも同じはずですが、うまくいかない場合は、業者を変えるか、インストールし直してみてください。

必要となるモジュールMetaTrader5は、メジャーなものではないので、

“`
pip install MetaTrader5
“`
として、別途インストールしておいてください。

#MT5への接続
まず、正常にログインできるMT5を用

元記事を表示

Talend Pythonスクリプトを実行する

## はじめに
talendでpythonや別のプログラムを実行する方法を記載。
CMDにPython環境の構築とライブラリのインストールが必要です。

## ディレクトリ
.
├── iris.csv
├── sample.py
├── TOS_DI-Win32-20200219_1130-V7.3.1

## 実行するPythonコード
Pandasライブラリを利用してiris.csvを読み込みdummy.csvを出力するのみ。
用途に合わせてPandasの実装が入る想定です。

“`sample.py
import pandas as pd

# input
df = pd.read_csv(“C:\\talend\\iris.csv”)

# ここで用途に合わせてpandasでデータの整形を実装

# output
df.to_csv(“C:\\talend\\dummy.csv”,header=True,index=False, encoding=’utf-8′)

“`

## 使用コンポーネント
tFileExist
事前に使用するファイルがあるかを確認しています。

元記事を表示

【python】pandas学習記録~3回目:Excelのデータ取り込み~

### はじめに

– バージョン
– Python: 3.6.8
– pandas: 1.1.5
– xlrd: 1.2.0
– 概要
– pandasのread_excelを使うと、簡単にエクセルからのデータ取り込みが出来るので試してみます。

今回はエクセルファイル(sample.xlsx)の以下、2つのシートからデータを抽出します。
このデータをもとに、名前と年齢を表示させるコードを作ってみます。(ex: Taro is 20 years old)

– Sheet1
![sheet1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554812/06ca1b18-8d84-c95f-b139-d99d72850ad0.png)

– Sheet2
![sheet2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554812/e2a28018-d584-92d2-ce98-c4ce41d6fa78

元記事を表示

Python環境構築のすすめ

# はじめに

PCを新調したので、Pythonの環境構築をしました。
あくまで僕はこんな感じで環境を作ってますというお話です。ご参考までに。

主な手順は以下の通りです。

1. 使用するソフトウェアのダウンロード
2. VS Codeのダウンロード
3. Pipenvの導入
4. Pipenvを用いた仮想環境構築

# 1. Python本体のダウンロード

何はともあれ、まずはPythonを入れましょう。

[ここ](https://www.python.org/downloads/)から入れましょう。バージョンどれ入れればいいのかみたいなのはあると思いますが、とりあえず最新版を入れておきましょう。ちなみにこの記事のような方法で環境構築を行うと、複数バージョンの管理もできます。

![スクリーンショット 2021-08-23 215342.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454070/c2b4e769-0d05-c5e6-3940-6dede80f1c3b.png)

下の画面が出た

元記事を表示

python3での標準入力メモ

この記事は古川研究室 [AdventCalendar](https://qiita.com/flab5420/items/fc94dadc49635f0e5c9f) 5日目の記事です.
本記事は古川研究室の学生が学習の一環として書いたものです.
内容が曖昧であったり表現が多少異なったりする場合があります.

#まえがき
これまで受けた[track](https://tracks.run/)や[paiza](https://paiza.jp/)でのコーディングテストで,入力のリストの整形にとまどったので自分用にまとめます.

標準入力は“`input()“`らしいのですが,入力としてリスト“`line“`が与えられたとします.

#区切り文字のある文字列を分割する
ここでは入力リスト“`line“`の要素が空白で区切られた文字列を分割します.

“`python
line = [‘3 2 3 2 3 2’]
“`

この場合,“`split()“`を使って分割します.“`split()“`は文字列を分割したリストを返してくれます.
“`split()“`の引

元記事を表示

三目並べ(と四目並べ)を強化学習で攻略してみた

こちらから学習済みのエージェントと対戦できます!
https://colab.research.google.com/drive/1AfgMy6YQmnakq0RQlCttw4pk0v-awD2f?usp=sharing

今回紹介するプログラムの全ては GitHub にアップロードしています。
https://github.com/yousukeayada/TicTacToe-RL

# TL;DR
– Q 学習で三目並べを攻略するプログラムをフルスクラッチで実装した。
– 学習した結果、ランダムに行動する CPU との勝率が、先攻の場合 89 % 、後攻の場合 69 % となった。
– 盤面の大きさが 4 の場合でも学習させてみた。

# 環境
– macOS Catalina 10.15.6
– Python 3.8.1

# 三目並べの定式化
## エージェント(Agent)
– Q 学習を行うエージェントは「◯」を使うものとします。
– 相手のランダムエージェントは「×」を使うものとします。

## 状態(state)
– 3×3 の各マスに対して「何も置かれていない」

元記事を表示

C++やPythonのいいとこ取りをしたいなら必ず考えるべきこと。

**@kenmaro**です。
普段は主に**秘密計算、準同型暗号などの記事について投稿しています**。
秘密計算に関連するまとめの記事に関しては以下をご覧ください。

> – [秘密計算エンジニアを始めて1年が経った。](https://qiita.com/kenmaro/items/416657efca2ff296169b)
– [秘密計算エンジニアを始めて2年半が経った。](https://qiita.com/kenmaro/items/48059dd60f79e80f5ef8)

## 概要

なにかライブラリを実装したりするとき、
**Pythonでサクッと作ってしまおうか、C++でがっつり作ってしまおうか、**
などと考えることは誰でもあると思います。

この際、

– **Pythonが得意とするところ**
– **C++が得意とするところ**

それらをどう構成させ、
**どのような機能を持った実装が必要なのかを今一度考えて**から実装するべき、
というのがこの記事の要点の一つ目。

必要ならブリッジするような実装も考える場合、

このような際、いくつか選択肢が存在

元記事を表示

Kaggleで書いたコードの備忘録その2~自然言語処理まとめ~(形態素解析、TF-IDF、スタッキング等)

初心者ながらKaggleに挑戦した時のコードを備忘録として残しておきます。
今回は自然言語編です。
また、BERT編を別記事にする予定です。

・Kaggle関係の記事
[Kaggleのタイタニックに挑戦してみた(その1)](https://qiita.com/pocokhc/items/f20b1518fb36f4ad0d00)
[Kaggleのタイタニックに挑戦してみた(その2)](https://qiita.com/pocokhc/items/9311836f2b0ab09cd6fc)
[Kaggleで書いたコードの備忘録~データ分析で使った手法一通り~](https://qiita.com/pocokhc/items/add4948aa0ff858218f8)
BERT編(そのうち)

# 作成したコード

[Kaggle notebook](https://www.kaggle.com/ngfkf1vv5ot6/titanicname)

# 1.データ

[Kaggleチュートリアルのタイタニック](https://www.kaggle.com/c/titanic/

元記事を表示

Windowsのファイル・ディレクトリ名の規則と制限事項に則って文字列を置き換える

Windowsのファイル名・ディレクトリ名にユーザーが入力した文字列を設定する場合、使用できない文字が含まれていると新しいファイル・ディレクトリ名として登録ができません。
使用できないファイル名だった場合、エラーにならない文字列に置き換える方法を模索してみました。

## 方針

– ShiftJISでシステムを利用している人にも文字化けしない文字を使用する
– 連続した空白文字などはスペース1文字にまとめる
– 使用禁止文字は全角に変換する

## 仕様理解

公式資料引用
https://docs.microsoft.com/ja-jp/windows/win32/fileio/naming-a-file

> ピリオドを使用して、ベースファイル名をディレクトリまたはファイルの名前で拡張機能から分離します。
> \パス の コンポーネント を区切るには、円記号 () を使用します。 円記号は、ファイル名をパスから分割し、1つのディレクトリ名をパス内の別のディレクトリ名から分割します。 実際のファイルまたはディレクトリの名前に円記号を使用することはできません。これは、名前をコン

元記事を表示

【GIS】Pythonでラスタ画像上の任意地点の値を拾う

# やりたいこと
ラスタ画像上で任意地点の座標を指定して,値を拾うってのをやります.多少語弊があるかもしれませんが,QGISでいうところのPoint Sampling Toolみたいなやつですね.
今回は,国土数値情報の土地利用細分メッシュを用いて,指定した座標の土地利用の画素値をサンプリングしてみます.

# 使用ライブラリ
今回使うデータがGeoTiff形式のラスタデータなので,読み込みにみんな大好きGdalを使います.
インストールは以下のコマンドでできます.

pipの人

“`console
pip install GDAL
“`
condaの人

“`console
conda install -c conda-forge gdal
“`

# 使用データ
繰り返しになりますが,国土数値情報の土地利用細分メッシュを使います.今回は四国周辺の2014年度版のものを使ってます.
以下のリンクからダウンロードできます.

[国土数値情報>土地利用細分メッシュ(ラスタ版)](https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt

元記事を表示

class内関数で可変長配列*argsとselfを使った際のエラー

## 問題
クラス内で“`def sample(self, *arg)“`を定義した際に以下のようにselfが引数として扱われてしまう。

“`python
class Sampleclass:
def sample(self, *args):
print(args)
x = Sampleclass
x.sample(1, 2, 3)
“`
“`
>>> (2, 3)
“`

## 解決方法
上の4行目でxにインスタンスを代入する際に()が抜けてました、、、
“`x = sampleclass()“`のようにすれば解決しました。初歩的すぎるけど()がなくても動いてしまうだけに引っかかってしまう人がいるかもしれないですね。

“`python
class Sampleclass:
def sample(self, *args):
print(args)
x = Sampleclass()
x.sample(1, 2, 3)
“`
“`
>>> (1, 2, 3)
“`

#### 追記

指摘いただいたようにク

元記事を表示

【100 numpy exercises】でnumpy力を鍛える!(31〜40問目)

こんにちは!

前回はnumpy力を鍛えるために21~30問やっていきました。

前回の記事はこちら

https://qiita.com/fav/items/db888c806ed92b68ed61

それでは前回に引き続き100 numpy exercisesを使ってnumpyの学習をしていきたいと思います!

今回は31~40問をやっていきます。

###31. How to ignore all numpy warnings (not recommended)? (★☆☆)
#####31. numpyの警告をすべて無視する方法(推奨しません)?

“`ruby:100_numpy_exercises.ipynb(31)
defaults = np.seterr(all=”ignore”)
Z = np.ones(1) / 0
“`

***np.seterr***は浮動小数点エラーを処理します。上記のように本来ならエラーが発生するような演算があった場合も無視します。

“`ruby:100_numpy_exercises.ipynb(31)-output
#何も出力

元記事を表示

AWS Lambdaでpandasを使いたい!

# Lambdaにはpandasが提供されていない
なので、自分でLayerを設定する必要があります。
以下、できるだけシンプルにLambdaでpandasを使うやり方をまとめます。

# pandasを追加する方法
## 1.追加するpandasのARNを調べる
* [ここ](https://github.com/keithrozario/Klayers/tree/master/deployments)から、**python3.8->arns->(リージョン).csv**へ進む
* 東京リージョンで使うならap-northeast-1.csv
* さまざまなライブラリがあるので、好きなpandasバージョンを探してARNコピー
* 2021年8月現在、最新版は1.3.2

## 2.Lambda関数で設定
* pandasを追加したい関数を選択
* 関数ページの一番下にあるレイヤーの「レイヤーの追加」を選択
* 「レイヤーを選択」で**「ARNを指定」**を選択
* 「ARNを指定」のテキストボックスに(1)でコピーしたARNをペーストして追加

## 3.panda

元記事を表示

【100 numpy exercises】でnumpy力を鍛える!(21〜30問目)

こんにちは!

前回はnumpy力を鍛えるために11~20問やっていきました。

前回の記事はこちら

https://qiita.com/fav/items/1abed47a6b6e22f90179

それでは前回に引き続き100 numpy exercisesを使ってnumpyの学習をしていきたいと思います!

今回は21~30問をやっていきます。

###21. Create a checkerboard 8×8 matrix using the tile function (★☆☆)
#####21. tile関数を使って市松模様の8×8の行列を作る

“`ruby:100_numpy_exercises.ipynb(21)
Z = np.tile( np.array([[0,1],[1,0]]), (4,4))
print(Z)
“`

前回の記事で8×8のマトリクスを作成し、市松模様で埋めるという問題を解きましたが、今回はそれを**tile**関数というものでより簡単に作れてしまうというものです。**tile**関数は配列を任意のタイル状に繰り返し並べた新たな配列を

元記事を表示

flaskで1から日記帳アプリを作る その1

#flaskで1から日記帳アプリを作る
夏休みに向けてWebアプリケーションを学びたいという方に向けて、簡単にWebアプリを作れるflaskを用いた日記帳アプリを作成していきたいと思います。

##環境
・pyenv + pipenv
・macOS Catalina
・sqlalchemy
・SQLite3

##記事内容

今回はflaskの概要を抑えつつ、DB接続を通じてデータの保存までの流れを書いていこうと思います。
本記事では以下の2部構成で進めます。
・その1(今回):ファイルの準備と各ファイルの説明
・その2以降:実際にコードを書きながら詳細の説明
また、初投稿な故見にくい部分等あるかと思いますがご容赦ください。

##本文

さて今回はflaskにおけるファイル準備を行っていきます。
本来、flaskは1つのファイルに全ての情報をかける「マイクロフレームワーク」という形式になっています。
しかし、実際のアプリとなるとやはりそれぞれの機能毎にファイルを分けたほうが、拡張性が高く便利です。
よって今回は、初めから各機能を分けてアプリを構築していきます。

###全体図

元記事を表示

mayaでDeadlineを使ってみる2

普段案件毎に読ませるプラグインを変えているので、deadlineのワーカーにも同一のプラグインを読ませないと動かない。
プラグインについてはver違いなどもあるので、ワーカーにとりあえず全部インストールスタイルは通用しない。

案件のmaya起動に使用しているusersetup.pyをmayaBatchに読ませたら良いのでは?

mayaBatch.exeに読ませられるか実験

SET MAYA_UI_LANGUAGE=en
SET PYTHONPATH=”Z:/python”
START “” “C:\Program Files\Autodesk\Maya2019\bin\MayaBatch.exe” -file “Z:\testFile.ma”

結果:どうやら読ませられる。

mayaBatch で GUIをいじるとクラッシュするとの報告も見かけたので、念のため usetsetup.py 内で

if cmds.about(batch = True) ==False:

によってmayaBatch時はGUI編集を飛ばすように対応。

元記事を表示

[機械学習] ド素人がscikit-learnを使ってアヤメ分類をやってみた

こんにちは。
scikit-learnを使ってアヤメ分類をしてみましたので軽くメモをまとめます。
今回は環境構築不要の開発環境 Google Colaboratory を使ってます。

# 今回やること
機械学習ライブラリであるscikit-learnを使って元々サンプルデータが用意されているアヤメデータを使って、がく片や花びら幅や長さを数値化してどこのアヤメなのか機械学習で判別します

![1_lFC_U5j_Y8IXF4Ga87KNVg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183215/86ffb98f-21e7-1198-9dcc-575ed1d1e828.png)

## 必要なライブラリなどインポートしておく

“`Python:1.py
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklear

元記事を表示

OTHERカテゴリの最新記事