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

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

Jupyterの可視化でよく使うdisplay()を水平(横)方向に出力する

## 0. はじめに
今回は軽い記事です。

Jupyterを使用してる時、データフレーム等をセルの出力結果に複数出力させる時によく使う`display()`
これは以下のように1個のセルで複数のデータフレームを「垂直」に出力できます。

“`python: 垂直にdisplay
import IPython.display # これ不要だけど一応
import numpy as np

#サンプル用のデータフレーム
np.random.seed(7) # 乱数固定
sample_df = pd.DataFrame(np.random.uniform(size=(5, 2)))

display(sample_df.head())
display(sample_df.head())
“`
![垂直.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373060/fc07bc09-0f33-ed95-d752-f80724fe858c.png)

これを水平にしたいと思ったことないですか? 行数多いとス

元記事を表示

Django templateでネストされた辞書変数に動的に(keyを変数で)指定する方法

# 1.この記事の内容

Django templateからネストされた辞書変数に対してkeyを動的に変えながらアクセスする方法を紹介します.
実装例全体は,[筆者のGitHub](https://github.com/ryoma-jp/samples/tree/master/web_app/05_how_to_access_to_nested_dict_objects)で公開していますので,詳細はこちらをご確認ください.

# 2.背景

Django templateから辞書変数にアクセスするには下記のように“. (ドット)“指定することでアクセスできます.

“`python:python
dict_data = {
‘key1’: 0,
‘key2’: 1,
}
“`

“`html:template
{{ dict_data.key1 }}
“`

アクセスするキーが決まっているならこれでよいのですが,キー名(key1, key2)が決まっていない場合に,単純に変数を“. (ドット)“で繋ぐことはできません.

“`python:python

元記事を表示

# pytest 一時ディレクトリを使いダミーファイルでテスト

キーワード: `tmp_path`, `monkeypatch.chdir`

## できること

テスト時は実際にファイルを参照せずに、ダミーファイルから参照させるようにする。

下記ディレクトリ構成で、 `input/sample.csv` が通常実行時に参照されるファイル。テスト時には、参照しないようにする。

“`
❯ tree -L 2 .
.
├── input
│ └── sample.csv
├── requirements.txt
├── src
│ └── app.py
└── tests
├── __init__.py
└── test_app.py
“`

## コード

“`python
import csv
import os

def main():
print(os.getcwd())
with open(‘input/sample.csv’, ‘r’) as file:
reader = csv.reader(file)
for row in reader:

元記事を表示

matting用のtrimapをマスク画像から作る方法

# Mattingはセグメンテーションの境界をくっきりさせる

# Mattingには、trimap画像が必要
セグメンテーション・マスクの境界をよりくっきり強化するmattingには、trimap画像が必要です。
trimapは、マスクの境界の、オブジェクトか背景か曖昧な部分がグレーになっている画像です。
しかし、人力でtrimapを作るのは時間と手間がかかります。

# マスク画像から自動でtrimapを作る方法

U2netなどでマスク画像を作り、以下の関数でtrimapを作成します。

“`python
import numpy as np
from scipy.ndimage import binary_erosion
import cv2

def make_trimap(mask,foreground_threshold=240,background_threshold=10,erode_structure_size=10):
# erode_structure_size で曖昧な領域の侵食度合いを決定します。
is_foreground = mas

元記事を表示

pythonスクリプトにargをつける方法

# Pythonファイルのshell実行に引数をつけるやつ

### 記述

“`python:arg_demo.py
import argparse

def parse_args():
parser = argparse.ArgumentParser(description=’demo’)
parser.add_argument(‘–input_path’, type=str, help=’input image file path’)
args = parser.parse_args()
return args

def run()
args = parse_args()
print(args.input_path)

if __name__==’__main__’:
run()
“`

### 呼び出し

“`shell
python arg_demo.py –input_path image.jpg
“`

>image.jpg

元記事を表示

ろうとるがPythonを扱う、、(その7:nmapとmultiping)

# ポートOpen/Close確認やマルチpingの実行
pythonのnmapモジュールおよびICMPLibを使って、ポートOpen/Closeなどの確認やマルチpingの実行を、tkinterによりGUIプログラム化する。

## ポートOpen/Closeなどの確認
ある特定のIPアドレスおよびポート番号にて、nmapのいくつかのオプション結果を同時に確認したかった(あまりそのようなものを見たことがなかった)ので、作ってみることにした。下記スキャンの結果を同時に表示する。
– -sS:TCP Synスキャン
– -sA:TCP Ackスキャン
– -sN:TCP Nullスキャン
– -sU:UDPスキャン

## 同一サブネット内のIPアドレス複数にping
例えば、「192.168.1.42/29」の場合、下記のIPアドレスにpingを行い、リプライがあったIPアドレスを表示する。
– 192.168.1.41
– 192.168.1.42
– 192.168.1.43
– 192.168.1.44
– 192.168.1.45
– 192.168.1.46

## 実行結果

元記事を表示

Pythonでsymbolブロックチェーン上の複数のアドレスに一括でXYM送金。(23年2月)

– 【概要】
symbolブロックチェーンにはアグリゲートトランザクションという複数のアドレス宛てのそれぞれのトランザクションを一括で送る機能がある。1件1件トランザクションを発生させて手数料を払わなくても、1回分の手数料で100件までのアドレス宛てに一斉に送信・送金が可能。

– 【環境・前提条件】
windows10
Python 3.10.9
symbol-sdk-python 3.0.3

– 【コード(testnet_aggregate_tx.py)】
それぞれのトランザクションを生成して、それらをまとめてアグリゲートトランザクションにしている感じ。必要なライブラリは、pip install <ライブラリ名>でインストール。

“`
import sha3
import datetime
import http.client
from binascii import unhexlify
from symbolchain.CryptoTypes import PrivateKey
from symbolchain.symbol.KeyPair import KeyPair

元記事を表示

ChatGPTでニューラルネットのコードを書かせてみたらすごかった

# 0.はじめに
いま流行りのChatGPTではプログラムのコードまで書けるということで、
PythonでMNISTの手書き数字を認識するニューラルネットワークを実装するコードを書かせて、実際に走らせてみました。

ChatGPTを使って遊んでみた程度の話なのでぜひ軽い気持ちで読んでみてください、、

“`
実行環境
Linux, Python3.9.12
“`

# 1.シンプルにMNISTを分類するコードを書かせる
まずは手始めにシンプルにMNISTを分類するコードをお願いしてみると、こんな感じで答えてくれました。なかなか良さげなコードが書けていそうです。
![スクリーンショット 2023-02-04 1.44.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884446/7e3776d2-544e-fe2c-4c83-48aa59bee017.png)

ChatGPTが出力したコード :

“` python
import tensorflow as tf

# MNISTデ

元記事を表示

初めてのグループ開発で三日坊主解消アプリを作成してみた

# 初めてのグループ開発で三日坊主解消アプリを作成してみた
## グループ開発をすることになった経緯
私はとある大学の情報系の学科に属しているのですが、これまで、アプリケーションを開発した経験が全くなく、このままでいいのかという思いがありました。
そこで、大学の実験テーマの一つにPBL(課題解決型学習)形式でのネットワークサービス開発というものがあり、興味を持ったため選択しました。
そこで今回、アジャイル開発をすることになりました。

## 投稿者について
先にも述べたように私はこれまでアプリケーションの開発を全くしたことがありませんでした。それどころか、学校の授業でプログラミングをすることになってもよくわからず、まともに授業課題をやることすらままならないような雑魚です。(そこは今でもそんな変わってませんが…)
そんな僕でもグループでとはいえ、アプリケーションを一つ開発することができたんです!初心者であってもまずやってみることが大切なんですね。

## グループ開発前に!
流石に全くアプリを作ったことがないままグループ開発に行くのはまずいため、授業ないで個人作業として何

元記事を表示

StreamDeckっぽいものを作る_1

開発言語
Python3系(便利そうなモジュールいっぱいありそうだから)
C#.NET(使い慣れてるから)

こんな感じでサーバとクライアントで分けて作ろうと思う
端末はジャンク品を直したwindowsタブレットでテスト的に作っていく。最終的にはesp32でできるといいなと思ってるけどパーツとかないからいつになることか
![構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494758/153c0065-548f-aa7e-2ed4-4669fa914b46.png)
クライアント側:基本的にはコマンドをネットワークで飛ばすだけのリモコンっぽい感じでいく。
サーバ側:飛んできたコマンドに応じて各種操作をする

コマンドデータフォーマット
cmd:コマンド名,各コマンドごとのパラメタ名:パラメタ値,各コマンドごとのパラメタ名:パラメタ値・・・

元記事を表示

Pythonでfirestore.client()に型をつける

[ドキュメント](https://firebase.google.com/docs/firestore/quickstart?hl=ja)だと
“`
db = firestore.client()
“`

のように記載してある。

しかし、firestore.client()は返り値の型を固定していないのでAny型となる。

db. のようにコード上で記載しても「お前Anyだから何出していいかわかんねぇよ」となる。

型をつけるために

1. importする

“`
from google.cloud.firestore_v1.client import Client
“`

2. 型をつけてあげる

“`
db: Client = firestore.client()
“`

これでdb. と書けば色々頼れる関数が出てくるはず。

追記

– エラーハンドリングはご自由に。どんな時も必ずClient型で帰ってくるわけではないので。

元記事を表示

PythonAnywhereでFlaskアプリを実行したときに生じる「Error running WSGI application」エラーの対処法

初めての投稿なので、読みにくいかもしれませんがご了承ください。

# エラー
“`:error.log
2023-02-03 14:55:46,616: Error running WSGI application
2023-02-03 14:55:46,617: OSError: [Errno 98] Address already in use
“`
PythonAnywhere上にFlaskアプリをデプロイして実行したときに、上のような`Address already in use`というエラーが起きて解決するまで時間がかかりました。

ネットで調べたlsofでプロセスを確認することや、killコマンドを使うなど試しましたが、全て上手くいかず…。

# 解決策
main.pyでFlaskのサーバーを起動する書き方が問題でした。

“`python:main.py(編集前)
app.run(debug=True, host=’0.0.0.0′)
“`
“`python:main.py(編集後)
if __name__ == ‘__main__’:
app.run(de

元記事を表示

Matplotlibでy軸にグラデーション色付けしたbar graphをアニメーションで動かす

この記事はこちらの記事の続きになります。もしよかったらこちらも読んでいただけると嬉しいです。
**基本的なSortをmatplotlibでアニメーションにしてみた**

https://qiita.com/ZawaP/items/622188e5d364c5e78ddb

## tl;dr
* Matplotlibを使ってBarにgradation colormapを反映し、Animationを使って動かしています。gradationは各Barに対してColor imageをFillするというやり方です。
* defaultはX軸に対して、Gradation Colorとなるため、Barのheightに対してGradation colorにする場合は、各barのheightに対して、Color mapを対応させるようにしています。
* Normalizeを無効化し、heightの最大値を基準としています。
* array-like という概念を初めて知りました。配列と何が違うのかは今後勉強します。

![animationWithoutNormalize.gif](https:

元記事を表示

win11toastを使おう!!

# 前書き
そもそも、win11toastとはpythonでデスクトップ通知を出すために作られたもです。

最初はwindows10でもwin11toastは動くのかを検証するつもりで始めたのですが、
案外はまってしまったのでそのままのノリで書いていたりします。

ですので、間違い等ございましたらご指摘のほうお願いします。

# win11toastのここがスゴイ
・名前に”win11″と書いてあるので、windows11に対応している!!
・win10環境でも普通に動く!!
・前作のwin10toastと比べ、書きやすさがアップ!!

# 環境
言わずもがなだとは思いますがpythonが必須です。
名前にある通りOSはwindowsで行います。

・windows 10 Pro (64bit)
・python 3.11.1 (多分3.6ぐらいあれば動きます)
・win11toast 0.32

win11toastはpipでインストールできます
“`:cmd
pip install win11toast
“`
これで準備ができました。
早速作っていきましょう!!

# 実際に使っ

元記事を表示

PythonでChord Diagramをプロットする方法

# はじめに

データ間のネットワークやフローのような相互関係を表現する際には円形でのデータ可視化がよく行われます。下記のような図は**Chord Diagram**と呼ばれ、各データの相互関係を分かりやすく美しく可視化することができます。

![chord_diagram_examples.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138429/86f46c14-58c4-844d-b0ac-624ee2423996.png)

本記事では、matplotlibをベースに個人開発したパッケージ **pyCirclize** ([GitHub](https://github.com/moshi4/pyCirclize), [Qiita紹介記事](https://qiita.com/moshi/items/b0d5b287bc9447948cae)) を利用して、PythonでChord Diagramをプロットする方法を紹介します。

# pyCirclizeのインストール

pyCirclizeは

元記事を表示

DeepLearningコード(Pytorch)

# はじめに
大学院を卒業したら,AIの研究職に…
いかないので,何年後かに見ても思い出せるようにコードを置いておきます.

自分のためなんだからね…!!
ガチで自分のメモ帳的な意味合いが強いので,解説なし&汚ねぇままです.
気が向いたらちゃんとするかもね~

# DNN(Base)
基本的な部分はDNNで書きます.
CNN・RNN・Segmentationはそれぞれ変化がある部分だけ載せます.
~~~
import os
import cv2
import random
import numpy as np

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
fr

元記事を表示

Histgram関数の理解

### はじめに

Histgramは、numpyで計算してからplotする方法と、matplotlibで直接Plotする方法があります。(Matplotlibでも内部でnumpyを用いて計算している。)
matplotlibで直接Plotを行うには下記の1が参考になります。 ここでは、1の記事に従いnumpyで計算を行いその後Plotを行った覚えです。
ここでは、度数分布、相対度数分布、相対度数密度の計算とPlotを示します。

##### 参考
1. [matplotlibでヒストグラムの縦軸を相対度数(柱の高さの合計=1)や相対度数密度(ヒストグラム全体の面積=1)にする](https://qiita.com/kanedaq/items/1e7a0e52363224c08980)

2. [NumPyでヒストグラムを作るnp.histogram関数の使い方](https://deepage.net/features/numpy-histogram.html)

3. [pandasで度数分布表を自動で作る関数](https://www.self-study-blog.com/do

元記事を表示

Djangoで単一アプリに複数テーブルを持たせる方法

## 背景
Djangoで単一アプリの中に複数テーブルを持たせたかったのですが、2つ目以降のテーブルのマイグレーションに成功しても管理サイト上で表示がされなかったので、その問題を解消したかった。

## 問題
まずテーブルを2つ定義(練習なので2つのテーブルの中身は一緒です)。
“`python:models.py
# 1つ目のテーブル
class People(models.Model):
# 項目定義
Name = models.CharField(max_length=100) # 文字列
Tell = models.IntegerField(blank=True, null=True) # 整数
Mail = models.EmailField(max_length=100) # Email
Birthday = models.DateField() # 日付
Website = models.URLField()

元記事を表示

特許データのクロス集計問題を考える

## クロス集計とは
クロス集計とは、2つの変数の関係性を視覚的に表示する手法です。2つの変数を軸にして、各グループの組み合わせの数の分布を示します。

例えば、以下の出願人と分類のグループがある場合には、
| 出願人 | 分類 |
| :—: | :—: |
| A | X |
| B | Y |

クロス集計表は、以下となります。
| | X | Y |
| :—: | :—: | :—: |
| A | 1 | 0 |
| B | 0 | 1 |
## 特許データの問題点
特許データでは、以下のように出願人や分類に複数の要素を含む場合があります。というより、ほとんど含んでいます。

| 出願人 | 分類 |
| :—: | :—: |
| A | X |
| A,B | X,Y |

これを単純にクロス集計すると、以下のようになります。これでも問題ないといえば、ないのですが、正確にはA,BはAとBに分けたい気もしますし、X,YはXとYに分けたい気もします。
|

元記事を表示

Azure AutoMLのトレーニング~推論で必要なものをPythonから取ってみた

# はじめに
Azure AutoMLのトレーニングから推論に関わる
+ トレーニング送信したジョブのstatus
+ ベストモデル名
+ デプロイ状況
+ RESTエンドポイントやAPIキー

これらをPythonから取得する方法について紹介します。

# 開発環境
+ OS Windows 10(NVIDIA GTX 1650Ti,16GB RAM, i5-10300H CPU)
+ Visual Studio Code 1.73.1
+ Python 3.8

# ジョブIDからStatusとベストモデル名を取得する方法
PythonからAutoMLのトレーニングを送信した後、それが終わったのかどうか知るためには`status`が必要です。また、トレーニングしたモデルを登録する場合、ベストモデルの名前が必要です。(登録時はそのモデルがあるパスも必要ですが、モデルの名前さえあればパス名もわかります。)

この`status`とモデル名は、どちらもジョブIDから一気に取得できます。
ということで、まずはそのジョブIDを取ってきましょう。

### ジョブIDの取得方法その①
1つ目の

元記事を表示

OTHERカテゴリの最新記事