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

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

FortranからMPIを使ってPythonにnumpy配列の並列処理をさせたい!: forpyの利用その4

この記事はFortranからPythonを扱う方法であるforpyを解説する記事の第四弾です。
[FortranからPythonを使いたい!:forpy](https://qiita.com/cometscome_phys/items/5b4347a48fb25b52e472)
[Fortranで機械学習がしたい:FortranからのPyTorchの利用](https://qiita.com/cometscome_phys/items/54adfb82410f1a3c0831)
[Fortranからnumpy配列を読み書きしたい!: forpyの利用その3](https://qiita.com/cometscome_phys/items/adf2b78b23a52941b0a3)
が以前の記事です。

今回は、MPI並列計算の中からPythonを実行してみましょう。特にnumpy配列をPythonに渡して処理してもらって、それをFortranが受け取ってまた加工し、そしてまたnumpyにしてPythonに送る、という処理をしたいと思います。
これの利点の一つは、Pythonをmpi4p

元記事を表示

BeautifulSoupの使い方

#BeautifulSoup
HTMLを解析してくれる。

“`
# URLからHTMLを取得します
url = ” https://docs.pyq.jp/_static/assets/scraping/item-list.html”
response = requests.get(url)
response.encoding = response.apparent_encoding
“`

`requests`で取得したHTMLを

“`
bs = BeautifulSoup(response.text, ‘html.parser’)
“`
BeautifulSoupにかけて解析できる。

第一引数には、解析したいHTMLを
第2引数には、パーサーを渡す。 なんか他にもいろいろとあるみたいだが、初心者はこれを覚えとけみたいな感じでした。

そこから、いろいろと抽出できる。方法も、CSSセレクタやidでの方法があるらしい。
今回は、CSSセレクタでの方法

“`
# div.item-list で 囲まれた部分を抽出し
div_item_list = bs.selec

元記事を表示

日本語の音声認識の市場調査と軽く触ってみた

# はじめに

この記事の対象は、日本語の音声認識をする人を対象としています。

本記事で扱う音声認識は、mp3などのファイルに固定のファイルを想定しています。
ストリーミングしたリアルタイム性のある音声認識は対象外です。

# サービスの紹介と、その特徴

| サービス名 | 料金 | 動作環境 | コメント |
|:-:|:-:|:-:|:-:|:-:|
| [Google Speech-to-Text](https://cloud.google.com/speech-to-text/?hl=ja) | 0~60分:無料トライアル
60分超~100万分まで:$0.006/15 秒** | API | 簡単に利用できた |
| [Amazon Transcribe](https://aws.amazon.com/jp/transcribe/) | [250,000分まで0.00040USD](https://aws.amazon.com/jp/transcribe/pricing/) | API | S3挟まないと動かない |
| [Azure Speech Servic

元記事を表示

SECCON Beginners CTF 2021 crypto 02 Logical_SEESAW Writeup

SECCON Beginners CTF 2021 crypto 02 Logical_SEESAW Writeup
pythonを勉強している者として,絶対に勝たなければいけない問題。
解けて,ほっとしている。

# 入手データ

“`
problem.py
output.txt
“`

“`python:problem.py
from Crypto.Util.number import *
from random import random, getrandbits
from flag import flag

flag = bytes_to_long(flag.encode(“utf-8”))
length = flag.bit_length()
key = getrandbits(length)
while not length == key.bit_length():
key = getrandbits(length)

flag = list(bin(flag)[2:])
key = list(bin(key)[2:])

cipher_L = []

for

元記事を表示

【python・Django初学者】Djangoの環境構築とディレクトリ構成について爆速で解説していく

#環境構築
###仮想環境作成

“`
python3 -m venv [newenvname]
“`

###仮想環境activate(Mac)

“`
source [newenvname]/bin/activate
“`
###仮想環境activate(Windows)

“`
.\[newenvname]\Scripts\activate
“`

###Djangoインストール

#プロジェクトを作成

“`
django-admin startproject mysite
“`
設定ファイルなど様々なモジュールを集めたものが作成される。

###プロジェクトの動作確認

外側のmysiteディレクトリに移動しコマンド入力

“`
$ python manage.py runserver
“`
“`
Starting development server at http://127.0.0.1:8000/
“`
この後半のurlで確認を行う
成功すれば
![スクリーンショット 2021-05-11 18.27.11.png](https://qiit

元記事を表示

【音速】python初心者が爆速でDjangoでLINEbotを作成した話

#LINE Developersにアクセスする

https://developers.line.biz/ja/
このURLからmessageAPIの今すぐ始めようをクリックし、ログインする。

#LINE Developersに登録する(初期設定)

チャンネル作成自体は特に難しい事はありません。言われるがままに身を任せて・・・
![スクリーンショット 2021-05-08 午後4.13.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487834/321c38ff-d582-5285-0cf9-c733a0d99003.png)

画像の下にあるはずのchannelIDとChannelSecretはメモをしておこう。

画像中央のMessaging APIをクリックし、QRコードをスマホで読み込み、自分のLINEに登録しよう。

#色々インストール

前回の記事でpython3系をインストールできたはずだから、pythonのコマンドであるpipコマンドで色々とインストールしていく
###LI

元記事を表示

【初心者に優しいLINEbot30分講座】他のサイトじゃうまくできなかったよね。オウム返し

#環境

pyenv Python 3.6.7
 Django==2.1.7
 line-bot-sdk
 gunicorn
 django-heroku
 psycopg2-binary

Heroku

#ディレクトリ構成
このディレクトリ構成を間違えて何度もエラーになったので、ここはしっかりする

“`
/djangobot
/bot
/_pycache_
/migrations
/_init.py
/admin.py
/apps.py
/models.py
/tests.py
/urls.py
/views.py
/djangobot
/_pychache_
/settings.py
/urls.py
/wdgi.py
/manage.py
/Procfile
/requirements.txt
/runtime.txt
/djangoenv
“`
#LINE Developersでチャネル登録

登録完了後
・チャンネル基本設定ページのチャネルアクセストークン
・Messaging

元記事を表示

SphinxでPythonライブラリのドキュメント周りを整備する

本記事は趣味で作っている以下のPythonのフロントエンドライブラリのドキュメント整備用のSpinx関係について備忘録としてまとめた記事となります。

https://github.com/simon-ritchie/apysc

主に以下のような内容について触れていきます。

– Sphinxなどのインストール
– Sphinxの基本設定の反映
– ダークテーマの反映
– マークダウンの有効化
– マークダウンでの表の有効化
– GitHub Pagesの検証と利用

# 使う環境

ライブラリがPython3.6以降のサポートとしているため、`python:3.6.12-buster`のPythonバージョン + Linuxのイメージを利用しています。

# Sphinxのインストール

Sphinxは本記事執筆時点で最新のPyPIの4.0.2のバージョンを使用していってみます。お仕事では3.4.0のバージョンを使っているためメジャーバージョンを上げた形での利用となりますのでどういった感じで変わっているかなど(躓く点など)も確認しつつ進めます。

Sphinx自体はpipでインスト

元記事を表示

集合

“`py
>>> a={1,2,2,3,4,4,5,6}
>>> a
{1, 2, 3, 4, 5, 6}
>>> type(a)

>>> b={2,3,3,6,7}
>>> b
{2, 3, 6, 7}
>>> a-b
{1, 4, 5}
>>> b-a
{7}
>>> a & b
{2, 3, 6}
>>> a | b
{1, 2, 3, 4, 5, 6, 7}
>>> a ^ b
{1, 4, 5, 7}
>>> s={1,2,3,4,5}
>>> s
{1, 2, 3, 4, 5}
>>> s[0]
Traceback (most recent call last):
File ““, line 1, in
TypeError: ‘set’ object is not subscriptable
>>> s.add(6)
>>> s
{1, 2, 3, 4, 5, 6}
>>> s.add(6)
>>> s
{1, 2, 3, 4, 5, 6}
>>> s.remove(6)
>>> s
{1, 2, 3, 4,

元記事を表示

OpenpyxlでPythonからExcelファイルを操作

### お約束

Excelのファイルは以下のような階層構造があります。

1. Workbook
1. Sheet
1. Cell

特定のセルを読みたければ、「ワークブックを開いてシートを開いてセルを開く」が必要です。

### インストール

– 必要に応じて仮想環境を有効化すること

“`
python -m pip install openpyxl
“`

### Pythonでパッケージ読み込み

– `NameError: name ‘openpyxl’ is not defined`とか出たらこれをやる

“`
import openpyxl
“`

### ワークブックを開く

– カレントディレクトリに「sample.xlsx」があることを想定

“`
workbook = openpyxl.load_workbook(“sample.xlsx”)
“`

### シートを開く

– 上記で開いたワークブックに「Sheet」シートがあることを想定
– シート名はケースセンシティブなので注意

“`
sheet = workbook[“Sheet

元記事を表示

オフライン環境でpython環境を共有して使いたい

web業界はインターネットにつながるのが当たり前ですが、データ分析業務ではオフラインで分析環境を構築することが多いかと思います。しかし、個人で開発するわけでもないので、複数人で環境を共有したいし、実験用に複数に環境も持ちたい。そんなpython環境をオフラインで構築する最適手法を求めて調べてみました。gitなどでソースは共有される前提です。

pipenv, virtualenv, pyenv, venvの差について
– https://qiita.com/KRiver1/items/c1788e616b77a9bad4dd

# pipenv
インターネット接続がある場合、pythonを含めた仮想環境の構築を行えるのでgit管理には最適だと思う。
しかし、そもそもオフラインを想定して作られたソフトウェアではない。

`pipenv install [file name]`でオフラインのファイルからインストールすること自体はできるようだが、そもそも仮想環境自体の構築

なので、installにはインターネット接続が必要なようで、wheelファイルなどを使ったオフラインインストールがで

元記事を表示

清一色の手牌は何通りあるか(13重ループ、再帰、itertools、包除原理)

一萬一萬Python関数の引数は「参照の値渡し」

# Python関数の引数は「参照の値渡し」である

[Pythonの公式チュートリアル](https://docs.python.org/3/tutorial/controlflow.html#defining-functions)によると、Pythonでは関数の引数はすべて「参照の値渡し」のようです。

> The actual parameters (arguments) to a function call are introduced in the local symbol table of the called function when it is called; thus, arguments are passed using call by value (where the value is always an object reference, not the value of the object).

## 検証

Python 3.9.5で検証。
– 参考: [組み込み関数 id() の仕様](https://docs.python.org/ja/3.9/li

元記事を表示

firmware(Reversing)【SECCON Beginners CTF 2021】

## はじめに

5/22-5/23 に開催された[SECCON Beginners CTF 2021](https://www.seccon.jp/2021/seccon_beginners/_seccon_beginners_ctf_2021.html)に参加しました。

実は僕がCTFを初めて最初にチャレンジしたコンテストが、昨年のSECCON Beginners CTFであり、当時は1~2問程度しか解けずに惨敗しました。

今回はその雪辱戦として、1年の成長を確認するために気合い入れて参加をしておりました。

そして結果はなんと、Reversing問題を5問全完することができました!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698873/c41386c0-f785-7f56-864e-a96189007346.png)

今回は、Reversing問題の中から、「firmware」という問題について簡単なWriteUpを書こうと思います。

## WriteUp

まず、

元記事を表示

Pythonでデザインパターンの勉強をしてみる # Strategyパターン

## はじめに
この記事では「[Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本](https://www.amazon.co.jp/Head-First%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-%E2%80%95%E9%A0%AD%E3%81%A8%E3%81%8B%E3%82%89%E3%81%A0%E3%81%A7%E8%A6%9A%E3%81%88%E3%82%8B%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%81%AE%E5%9F%BA%E6%9C%AC-Eric-Freeman/dp/4873112494)」という書籍を使ったデザインパターンの学習のメモを書いていきます。
書籍内ではJavaでコードが書かれていますが、それをPythonで真似てみることで、Pythonの学習にも役立てる予定です。デザインパターンもPythonも知識が浅い

元記事を表示

光の3原色の勉強ついでに3次元RGBプロットしてみた

# 概要
色に興味を持ちまして、RGBの様々な組み合わせの色をパッと把握する図を作りたいなーとググってたら、下記発見しまして

https://stackoverflow.com/questions/40853556/3d-discrete-heatmap-in-matplotlib
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237551/63298d2a-ff04-dbbb-71c2-d5b370ad6460.png)

「何これカッコいい!」といてもたってもいられず、3次元プロットをやってみました
(すでに目的がずれている)

これを参考にplot_surfaceを使ったんですが、くすんだ色になってしまい、これが解決できず・・。
([cmap使えばきれいな色出てそう](https://matplotlib.org/stable/gallery/mplot3d/surface3d.html)なんですが、colorやfacecolorで指定するとダメでした)

諦めて最後はscatt

元記事を表示

交差検証で学習データにオーバーフィットする事例について

#はじめに
機械学習において汎化性能を評価する方法として、交差検証(クロスバリデーション)がよく用いられる。

このクロスバリデーションであるが、**学習データにオーバーフィットすることもある**ので、実施する前にテストデータを残しておき、クロスバリデーション後にテストデータを使って**未知のデータに対する精度**を検証することが一般的に推奨されている。

とはいえ、**5分割とかに分割して検証しているのに、学習データにオーバーフィットすることなんてあるの?** と半信半疑だった。今回、見事にオーバーフィットするケースを見つけたので共有したい。

#前提
今回は、http://moleculenet.ai/datasets-1 で公開されているFreeSolv(回帰)のデータを用いる。MoleculeNetによるとこのデータの最高精度は**R^2**で**0.92**程度となっている。

#やってみよう

データを学習**449件**、テスト**193件**に分割し、**420個の多めの特徴量**を用いて、学習データに対し scikit-learn の SequentialFeatur

元記事を表示

プリザンターの一覧画面で選択したレコードを送信する

#はじめに
プリザンターの一覧画面で選択したレコードを送信する方法を記述します。
(送信先のプログラムでPDF帳票を作成して返す、のような使用を想定しています。)
CORSエラーでハマったので、備忘と情報共有のため記事にします。

##ボタン追加
スクリプトで一覧画面にボタンを追加します。

“`javascript
// ======== 初期化 ========
// 一覧表示のロード時に初期化を呼び出す
$p.events.on_grid_load = function () {
init();
}

/* =============================================================================
関数:init
機能:初期化を行う
・ボタン追加
・ボタンクリック時の処理を登録
・XMLHttpRequestと応答処理を作成
引数:なし
備考:一覧画面のロード時に呼び出される
=========================================

元記事を表示

Rustの勉強ログ 競プロ典型90問をRustで説いてみる 010 Score Sum Queries

# 目的

知人からRustを勧められたため、試しに競プロの問題をRustで解いてみた。

## 背景(著者のスペック)

AtCoderは主にPythonを使用している。最高レーティングは1200強。
一応昔Cも触っていたので、ポインタの考え方や静的型付けはある程度は理解しているつもり。

Rustを触ってみることが主目的なので、自分の実力で余裕を持って解ける問題(ABC換算で300点)をまず解いてみる。
今回はタイトルの通り、010に挑戦。

# 010の考え方

まず、NとQのサイズがともに10 ^ 5のため、常識的な時間(Pythonでも解ける時間)でときたい場合、
O(N)時間の処理とO(Q)時間の処理で対応する必要が出てくる。

この場合、1組と2組の最初のX人の点数の合計値を出し(O(N))、適切に差分を取って(Qのそれぞれで定数時間→O(Q))答えを出せば良い。

Pythonならこうなるかな。(先にRustで書いてからpythonを書いている)

“`python
N = int(input())

student_list = [tuple(map(int, in

元記事を表示

【firebse-admin】Google Cloud Storageをpythonで扱う

pythonでcloudStorageを扱う方法について解説していきます。

## firebase-adminの認証からバケット作成まで
#### パッケージ読み込み
“` python
import firebase_admin
from firebase_admin import credentials
from firebase_admin import storage
“`
#### firebase-appの作成
“` python
# サービスアカウント用の秘密鍵ファイル
# 環境変数で指定している場合は環境変数を指定↓
credFilePath = “./secrets/credfile.json”
cred = credentials.Certificate(credFilePath)
default_app = firebase_admin.initialize_app(cred)
“`
サービスアカウント用の秘密鍵ファイルの取得はこちら
https://firebase.google.com/docs/admin/setup?hl=ja#initiali

元記事を表示

OTHERカテゴリの最新記事