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

Python関連のことを調べてみた2022年06月16日
目次

Pythonのglobalキーワードを省略できるケース

# Pythonのglobal変数
短いスクリプトを書いたり、サンプルコードを少し実験してみるときには、私はしっかり作り込んだりせずglobal変数に頼ったりすることが多いです。そういったシーンでは、global変数を参照する際に毎回`global`キーワードを記述するのも面倒。省略できるなら省略したい。けどどんなときに省略できるのか詳しくわかっていませんでした。
いくつか実験をしてみましたのでみなさんの参考になればと思います。

### まずはわかった結論から
– globalキーワードを省略ルール?
– `def`の中など、あるローカル名前空間で`global`キーワードを省略した場合、**書き換えが行われる変数が**、グローバル変数と同じ名称だった場合、それはグローバル変数ではなく、新しいローカル変数であると判断されるようです。そして一旦ローカルであると判断されたあとはその名前空間では絶対に同一名称のグローバル変数へのアクセスができなくなるようです。
– 一方で、書き換えを行わないのであれば`global`キーワードを省略してもグローバル変数として扱われるようです。ややこ

元記事を表示

【個人開発のススメ!】未経験エンジニアの転職の決め手になった(?)ポートフォリオを紹介!

# 導入

こんにちは!

私は現在北海道のWeb系自社開発企業にてフルスタックエンジニアとして働いていますが、
元々は都内の広告代理店でWebマーケターとして勤務していました。

ですが、趣味で触り始めたプログラミングの楽しさに引きずり込まれて、現在の会社へと転職するに至っています。

今回の記事では、私がエンジニアに転職する時にポートフォリオとして提出したWebサービスの技術スタックや、うまくいったこと・いかなかったことの振り返りを共有させていただくことで、
読者の方の個人開発への知見が広がればいいなと思っております。

# サービス概要

下記が今回取り上げるポートフォリオの概要です。

* 正式名称
* 学習院大学 国社生だけのOB・OG相談サイト Kiite-me!(キイテミ)
※以下「Kiite-me!」
* 運営期間
* 2021年3月30日から2022年4月1日まで
* サービス説明
* 一言でいえば、__クローズドコミュニティ型Yahoo知恵袋__。
* 解決したい課題
* 「Kiite-me!」を立ち上げ始めていた時(

元記事を表示

iPhoneでも使えるようになったLiDARの標準ファイル形式「LAS」ってどんなデータなの?を、PDAL/Laspyを使って調べてみる。

## lasデータってなんや

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203944/3ecbdd4d-3127-cfd2-efd2-3e3c015eaa0d.png)
※掛川城の点群データをopen3Dで可視化したやつ

以前こんな記事を書きました。
ざっくり要約すると「**lasデータをOpen3Dで可視化し、plyで出力する記事**」なのですが、この記事で元データとなった「LAS」という形式についてちょろっとだけ触れています。
[Leafmap/Open3Dを使って掛川城の大規模点群データ(5GB)をPythonで可視化してみよう!](https://qiita.com/nokonoko_1203/items/63e00d279cf7efb5521d)

ただ、「点群データだよ」と「LiDARの標準形式だよ」ということ以外にはほとんど触れなかったので今回はもう少し踏み込んだ上で、Pythonから色々触ってみて、さらに点群データの超軽量化までやってしまいましょう!

## どん

元記事を表示

rosparam + デフォルト値

# 概要

パラメータを取得する際、指定したキー値がなかった場合のデフォルト値を設定する方法

# 環境

| 項目 | 値 |
|:-:|:-:|
| Ubuntu | 20.04 |
| ROS | Noetic |

# ソースコード(C++)

メソッド`ros::NodeHandle::param()`を使う。

“`
// private node handleの初期化
ros::NodeHandle private_node_handle(“~”);

// デフォルト値”param!”でパラメーターを取得
auto param = private_node_handle.param(“path/to/param”, std::string(“param!”));
“`

以下のように参照渡しでも設定可能

“`
// パラメーター保存用の変数の宣言
std::string param;

// paramにパラメーターの値を設定
if (private_node_handle.param(“path/to/param”, param, std::string(“p

元記事を表示

Azure MLの計算リソースの寿命は短い

普段Azure Machine Learning(Azure ML)を用いて機械学習関連の開発業務を行っています。

いつものようにブラウザからStudioにアクセスして、Computing Instanceを起動させようとしたところ起動に失敗してしまいました。

# 起動しなくなった原因
Computing Instanceを作成してから大分日が経っていたことが原因だと考えられます。
といっても1年以上放置していたわけではなく、今回は作成してから9か月経った時点でダメになりました。

このような仮想マシンは作成した時点では最新ですが、以後は自動的に不具合修正やセキュリティ更新プログラムの適用がされることはないようです。
これが積み重なり、不具合が発生して起動しなくなる事態に発展するわけですね。

# 対処方法
起動しなくなったVMはもうどうしようもなく、削除して再作成するほかありません。
当然、再作成後のVMには以前インストールしたPythonのパッケージが残っているわけもないため、
環境の再構築が必要になります。面倒ですね。
(Experimentをきちんと立てて実行するだけならV

元記事を表示

【試してみた】PythonでPDFからテキストを抽出する方法

【はじめに】

  • 仕事中にブログネタを思いつくことが時々あり、会社のPCをお借りしてテキストに起こすことがありました。
  • 個人アドレスにはメールを送れないので、毎回プリントして帰宅後に自分のPCに転記するということをしています。
  • 毎回この作業をすると思うとかなり面倒なので、Pythonを使ってテキストを抽出する方法を試してみました。

本記事の内容

  • 準備
  • PDFファイルからテキストを抽出してみた
  • PDFファイルを画像として認識し、テキストを抽出してみた

※OS環境はMacOS、実行環境はJupyter Labを使用します。

【準備】

作業ディレクトリにテキスト抽出したいPDFファイルを配置する

  • sample1.pdf

アンパンマンキャラ識別アプリを作ってみた

## 目次

– はじめに
– 実行環境
– 画像収集
– CNNモデル作成(初期)
– 改良(画像水増し、vgg16転移学習、バッチ正規化)
– アプリ作成
– 反省とまとめ

## はじめに
 この記事は初心者のおじさんが、思い付きで始めたプログラミング学習の一環としてAidemyさんのデータ分析講座を受講し、成果物の作成をしたものです。
 テーマは「アンパンマンキャラを識別するアプリを作成する」です。子供が好きなのと、画像収集が(おそらく)容易であろうということで決めました。
※記事中にはアンパンマンの画像は著作権の関係で載せていません

## 実行環境
 Python 3.10.4
 Google Colaboratory
 Visual Studio Code (1.68.0)

## 画像収集 (Icrawler)
画像収集にはIcrawlerを用いました。
[公式サイト](https://icrawler.readthedocs.io/en/latest/)
[参考サイト](https://atmarkit.itmedia.co.jp/ait/articles/2010/

元記事を表示

Blender見失った画像の一覧を書き出す

Blenderに限ったことではないですが
複数人でファイルを受け渡しながら作業をしていると
テクスチャ画像等、ファイルのリンクが切れたりすることがあります

見失ったファイルの一覧は ファイルメニューの外部データ>パスが壊れているファイルの報告
または  bpy.ops.file.report_missing_files() を実行することで
で、システムコンソールや情報エディタに表示できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/f5404e60-a5a0-4d7f-ecfa-05a17c8cb2e3.png)
ただ、重複して同じ画像を利用している場合には重複表示されたり
システムコンソールでは文字化けすることがあったりと使い勝手が良くありません

見つけられない画像ファイルの一覧を取得する簡単なスクリプトを作成してみました

“`missing_img.py
import bpy, os
missigfiles = []
for img in bpy.data

元記事を表示

GridDBを用いたBustabitのギャンブル行動のクラスタリング

## はじめに

人間の行動を理解することは、厄介で注意を要する作業です。ある状況下で人がどのように行動するのか、どのような判断を下すのかを説明するのは簡単ではありませんし、単純でもありません。しかし、人を観察し、次に何をするかを予測しようとすることは、真の学習経験を提供します。それは、より良い結果を得るために、十分な情報を得た上で意思決定を行うのに役立ちます。

人間の性質を予測することが有益な場面のひとつに、ギャンブルがあります。例えば、ポーカーゲームでは、様々な状況下でプレイヤーがなぜレイズ、コール、フォールドするのかを理解することで、競争において明確なアドバンテージを得ることができます。このプロジェクトでは、ギャンブラーのためのオンラインプラットフォームである **Bustabit** のデータを使用します。

ゲームのルールは以下の通りです。

1. ビットコインの100万分の1であるBitsで任意の金額を **「ベット」** することができます。
2. ゲームが終了する前にキャッシュアウトすれば勝ちとなります。
3. キャッシュアウト時に、その時点のマルチプライヤーの

元記事を表示

JSONデータを日付毎に保存(Python)

# 概要
JSONデータに指定された日付毎にファイルを保存するツールを作成したいと思います。

# JSONデータ
下記のデータを作成して保存します。
文字コードはS-JISで改行コードは「\n」で保存します。

#################
cur20200101.json
#################
{“name”:”田中”,”age”:”46″,”gender”:”1″,”reg_date”:”2020/01/01 15:33:25″}
{“name”:”鈴木”,”age”:”32″,”gender”:”1″,”reg_date”:”2020/01/01 16:18:12″}
{“name”:”水島”,”age”:”52″,”gender”:”1″,”reg_date”:”2020/02/01 17:48:45″}
{“name”:”田中”,”age”:”46″,”gender”:”1″,”reg_date”:”2020/02/02 22:33:25″}
{“name”:”鈴木”,”age”:”32″,”gender”:”1″,”reg_date”:”2020/03

元記事を表示

Python勉強③ 素因数分解 2022/06/15

「アルゴリズム×数学」が基礎からしっかり身につく本 でAtcoderデビューしたいNorthです。

今日は素因数分解について勉強しました。

①平方根までの約数を使う
②素数を使う

2種類の方法を学び、②の方が難しいですが計算速度は早くなることを学びました。

まず①平方根までの約数を使い素因数分解を書き出す方法です。

~~~
def Factorization(N):
list = []
for i in range(2, int(N ** 0.5)): #平方根までの約数
while N % i == 0: #割り切れるなら
list.append(i) #リストに追加
N = N / i #素因数分解を継続
if N != 1: #そのものが素数のとき
list.append(int(N))
return list

list = Factorization(int(input()))
print(*list)
~~~
知らなかったのですがlistに*をつけるこ

元記事を表示

PythonとHerokuで最初のRedditボットを作成する

Redditのボットを作るのは簡単なはずですが、そのプロセスはあまり文書化されていません。この記事では、ボット作成の一つ一つのステップを案内していきます。

## Redditとは?

redditとは、米国の出版大手コンデナストが運営するソーシャルニュースサイトである。「Digg」と並ぶ代表的なソーシャルニュースの一つとして認知されている。このサイトは色んなコミュニティー入ってまして、例えば 「reddit.com/r/soccer」がサッカーのスレッド、「reddit.com/r/movies」が映画など

## 前提条件

– Pythonの基本的な知識
– コマンドラインの使用
– Redditのアカウント
– 電子メール
– Githubのアカウント

第1部: Redditの開発者アカウントを作成する
2019年以降、Redditはその外観を大きく変えましたが、すべての開発者ツールはまだRedditの旧サイトに収容されています。

https://old.reddit.com でRedditのアカウントにログインします。
プリファレンスをクリック

![1_GqnmAn

元記事を表示

平均50・分散10の分布、色々作れるよ!

世の中、「平均」だけで統計を語ってる人や記事が多すぎるので、いろんな分布を自在に作ってみようと思いました。せっかくなので分散も固定して、平均50・分散10の分布を色々作ってみましたよ!

# Optuna インストール

Optuna はほとんど何も考えずに最適化できるので楽で良いですね。I love Optuna!

“`python
!pip install optuna
“`

# 必要なライブラリのインポート

“`python
import optuna
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
“`

# 正規分布

平均50・分散10の正規分布を作るためのObjectiveを作ってみました。え?平均50・分散10の正規分布なんて、Optuna使わなくても作れるって?その通りなんですが、他の分布を使うための練習ですよ、練習。

“`python
class Objective:
def __init__(self, target_mean =

元記事を表示

プライベートのPythonライブラリ開発で設定しているGitHub Actionsを一通りしっかりまとめてみた

※この記事はQiita エンジニアフェスタ 2022「 GitHub Actionsの自分流の使い方をシェアしよう 」用の記事となります。

https://qiita.com/official-events/14b94a693d6153857db4

趣味(技術的盆栽)でちまちまと作っているPythonライブラリに対して設定しているGitHub Actionsの各種設定について説明・振り返りなどしていきます。Pythonライブラリの作成を検討している方で少しは参考になれば幸いです。

# 対象のライブラリ

以下のリポジトリのライブラリとなります。「Pythonでフロントエンドを書けるようにしてみたい」「細かい調整も自分でできるようにしたい」「HTMLとしてだけでなくJupyter notebook上でも使いたい」「将来的にはプロット制御などでも役立てたい」といった感じで少しずつ書いていっています。

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

# 設定しているGitHub Actions

Pythonライブラリなのでpipで扱えるようにするため

元記事を表示

SPSS Modelerのユーザー入力ノードをPythonで書き換える。

SPSS Modelerでテスト用データやシミュレーション用データをつくるユーザー入力ノードをPythonのpandasで書き換えてみます。

以下の@416nishimaki さんの記事でModelerでの使い方は解説されていますので、この内容をpandasで行ってみます。

SPSS Modeler ノードリファレンス 1-3 ユーザー入力 – Qiita

https://qiita.com/416nishimaki/items/7cac454b4484f79d3587

# 1.連番データ作成

Modelerでは以下のように「1;13」という指定で1から13までの連続データを生成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/7590a14c-d0b6-e180-b909-ff60288d33ae.png)

pandasではrangeオブジェクトで同じことができます。
ちょっとトリッキーなのは、出力結果にはstop値は含まないことで、出力したい値

元記事を表示

VPSとクラウドサービスの違い 医療応用の可能性

サーバーを利用する必要があれば自社の建物の中などに
サーバー機器を設置して利用するのが一般的でした
この運用形態のことを「オンプレミス」といいます
病院などでは「オンプレミス」によって
各病院でデータ管理するのが通常でした

病院の中のみで使用できる
物理サーバーを自社内などに設置して利用するオンプレミス型と違い

仮想環境でサーバーを構築して利用するVPSやクラウドサービスは
導入コストの安さ、手軽さなどから導入が拡大しています
今後は電子カルテなどのデータの利活用が促進されることを考えると
病院間を超えて 良質な医療のため 
クラウドコンピューティングの普及がおこることが想定されます

https://note.com/taichi_endoh/n/ne1f508db26df

VPSやクラウドサービスとはどのような機能でしょうか?

### VPS(Virtual Private Server)

VPS:自由度は低いが安価

ホスティング業者によって提供されるサービスであることが多く
一台の物理サーバー上に仮想的に複数のサーバーを構築して利用できるようにしたものです

固定

元記事を表示

M1 Mac、MontereyでPythonインストールするとreadline warning/SSL Errorが起きる場合の対処法

MontereyだとPythonを標準でインストールしなくなりました。
で、Pythonを使う場合、インストールする必要があるんですが、インストールした時にwarningやらエラーでハマったのでそれのメモ。
ちなみに、python2.xはサポート切れているので、基本的には3.xを入れるべきかと思います。

まず、インストールをぐぐりながら続けていくとこういうエラーが出ることがあります。

“`
pyenv install 3.10.4
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.10.4.tar.xz…
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL

元記事を表示

Python勉強開始② product 2022/06/14

アルゴリズムと数学の問題を今日も解いています。
008 – Brute Force 1の問題でGithubにPythonの解答が見つからなかったのでうんうん唸りながら解きました。

問題文
赤・青のカードが各 1 枚ずつあり、あなたはそれぞれのカードに 1 以上 N 以下の整数を 1 つ書き込みます。

カードに書かれた整数の合計が S 以下となる書き方は、いくつありますか?

これは全探索と呼ばれるアルゴリズムのようで、productを使って以下のように書き上げることができました。

~~~
from itertools import product

N,S = list(map(int, input().split()))
l1 = range(1, N+1)

l = []
p = product(l1, l1)

for v in p:
sum = v[0]+v[1]
if sum <= S: l.append(sum) print(len(l)) ~~~ 何かもたついているような気もしますがどう変えたらいいのかわかりません。 ここでpro

元記事を表示

音楽を聞きながら寝るだけで睡眠を改善する方法

一般的にバイノーラルビートと呼ばれる左右から異なる周波数の音をヘッドホンやイヤホンで聴くことで、左右の周波数差分だけ脳波が誘導されると言われています。
バイノーラルビートによる脳波誘導の検証は[こちら](https://qiita.com/tatsui/items/6308563300bebd8ef61b)の記事も参照してみてください。
今回はこのバイノーラルビートを使って睡眠もコントロール可能なのかどうかを検証してみました。

## 検証に使用したセンサーとアプリケーション
* [Muse S](https://choosemuse.com/muse-s/)
* [Mind Monitor](https://mind-monitor.com/)

バイノーラルビートの効果を検証するために脳波計(EEG)とジャイロセンサーを使います。
睡眠時は長時間バッテリーが動作する必要があり、寝返り等で電極がずれないようMuseS(Gen1)を使用しました。
計測データは正規化された脳波の値を使用しています。

## サンプルデータの読み込みと表示
“`python
import panda

元記事を表示

dict.fromkeysの罠

昔、こんな記事を書いたものです。

https://qiita.com/valusun/items/1ea8c08a19c2b2f349b4

AtCoderの[ABC235-C](https://atcoder.jp/contests/abc235/tasks/abc235_c)を解いていたら、見事に罠に引っ掛かったので書いておきます…

## 概要
この問題は、出現した値をキーに、出現した場所を値と持った辞書が必要になります。
入力例1を例に取ると、
“`
1 : [1, 2, 5]
2 : [3, 6]
3 : [4]
“`
のような辞書を作成します。

自分は以前、上記のような記事を書いたこともあり`fromkeys`を使って下記のように書きました。
“`python
N, Q = map(int, input().split())
A = list(map(int, input().split()))
dic = dict.fromkeys(A, [])
for i, a in enumerate(A):
dic[a].append(i +

元記事を表示

OTHERカテゴリの最新記事