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

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

Raspberry Pi 4 を使ったROS入門 第1.5回 環境構築② VNCとVSCodeの導入

# はじめに
この記事は研究室の学生の教育用に作成してゆきます.
現在はROS2がメジャーとなってきておりますが,まずは自習が出来るよう文献が豊富なROS1でROSの扱いに慣れてみます.
ROSは既に多くの文献があり,それだけでも自習可能ですが解説されているバージョンや環境が違い,初心者には躓きやすい内容だと思ったため,改めてまとめてみます.

前回はこちら
[Raspberry Pi 4 を使ったROS入門 第1回 環境構築① Ubuntu20.04とROSのインストール](https://qiita.com/H-Ando-robo/items/2502043c3701e270818e)

# 動作環境
Raspberry Piを使用します.(用意できるならUbuntu入りのPCが◎)
ROSはUbuntu上で動くソフトなのですが,設定の違いによってトラブルが起きやすいので,クリーンインストールしてから始めることをお勧めします.
ROSのバージョンはUbuntuのバージョンとリンクしてます.

本記事で使用する機器とバージョン
| 使用機器 | Ubuntuバージョン | ROSバー

元記事を表示

[Python × GIS]Polygonデータに含まれるPointデータの数をカウントするPointInPolygonクラスをgeopandasパッケージで実装してみた

# はじめに

今回はPythonの`geopandas`パッケージを使って、各Polygonデータ内のPointデータの数をカウントする`PointInPolygon`クラスを実装してみます。
Pointデータの分布をより大きな空間単位に集計するようなケースは良くあるのですが、私が良く使う`geopandas`ではそういった関数やクラスは実装されていないので、今回の試みに至りました。

また、最近リーダブルコードを読み、何となく読みやすいコード設計を意識したので、「ここの設計をこうした方が良いのでは…?」という考えがありましたら、ぜひコメント頂ければ嬉しいです:)

↓以下の図のようなPointデータとPolygonデータを想定しています。

![](https://miro.medium.com/max/720/1*BgGTyexqblcdUS_dVtg4Hw.png)

# polygonデータ中のpointデータの数をカウントするクラスを設計する

`geopandas`の`GeoDataFrame.sjoin()`メソッドを活用する事で、polygonデータ中のpoint

元記事を表示

pandasのresampleにおけるffillの挙動

# 不定間隔でサンプリングされたデータのリサンプリング
“`python
df.resample(‘1ms’).ffill()
“`
としたら、NaNだらけになって???となったので、その時のメモ。

# 結論
“`python
df.ffill().resample(‘1ms’).ffill()
“`
とすればいいみたい。
resampleにおけるffillは、あくまでリサンプリング時に、データがないものをfillするだけで、
直前のデータがNaNだと、NaNで埋められる。
言われるとそうだけど、2回ffill呼ぶのが気持ち悪い。。。

# 例

“`python
import pandas as pd
import io

df = pd.read_csv(io.StringIO(“””
col1,col2
2020-10-19 13:27:43.038572032,,15
2020-10-19 13:27:43.041051392,,25
2020-10-19 13:27:43.043462656,30,35
2020-10-19 13:27:43.045890304

元記事を表示

ダニングクルーガー効果は嘘

ダニングクルーガー効果とは、実際の能力が低いほど、自己評価が高くなるという仮説である。

# 文脈
Andy Huntなどがエンジニアのダニングクルーガー効果について著書で述べていたり、「ワタシリナックスチョットデキル」のTシャツを着たリーナスの画像に共感が持たれるように、これが真実として語られる。人々は信じたいものを信じるので、謙虚ではない意識高い系の能力が低いと信じたいようである。

しかし、本当にダニングクルーガー効果は存在するのだろうか。

このような心理効果を数学的に分析しようとしたのは、以下の記事が最初かもしれない。
https://web.archive.org/web/20190306112412/https://datanerd.hateblo.jp/entry/2017/09/11/162446

魚拓に残っていて良かったが、これは自分が学生時代に作成した記事だ。専門学校の教師がFacebookでダニングクルーガー効果について熱弁していてムカついたので、その反論のために書いた記事である。

これと同じことをもう一度書く。

# 定式化
– 定義: 実際の評価が低いほ

元記事を表示

【TwitterAPI】超簡単!tweepyを用いて検索したツイートをいいねしよー!

# 今回やること〜

今回は特定のキーワードでTweetを検索して、その投稿をいいねしていきたいと思います!

前回、TwitterAPIの取得方法を0からまとめてみたのでまだAPI取得できてない人は先にこちらの記事を見といてください!

https://qiita.com/Naoya_pro/items/f1bdba5260bda054f6d2

# いいねする方法は?

それでは早速やっていきましょー!

“`python:前回のコード
import tweepy

# 自分のキーに変更
api_key = “**********”
api_key_secret = “**********”
access_token = “**********”
access_token_secret = “**********”

# Twitterの認証
auth = tweepy.OAuthHandler(api_key, api_key_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweep

元記事を表示

PythonでHeapsort

# PythonでHeapとHeapsortの実装

“`python
from typing import List

def heap_up(array: List[int], idx: int) -> List[int]:
“””Bubble up the element at idx until it is in the correct position.

Args:
array (List[int]): The array to heapify.
idx (int): The index of the element to heapify.

Returns:
List[int]: The array with the element at idx heapified.
“””
left = 2 * idx + 1 if 2 * idx + 1 < len(array) else None right = 2 * idx + 2 if 2 * idx + 2 < len(arr

元記事を表示

常微分方程式から時系列のシミュレーションへの簡潔な手引き

常微分方程式から時系列のシミュレーションへの簡潔な手順を書き残しておく。

## 本記事のきっかけ

後輩に時系列のシミュレーションを教えようとしたら、なんだかグダグダになってしまったので、反省をこめて簡潔にまとめなおしておく。

シミュレーションの実行環境はpython3

## シミュレーションの流れ

常微分方程式から時系列のシミュレーションは、以下の手順が基本になる。

1. 以下の式の形に合わせて、システムの常微分方程式をつくる。
$$\dot{x}(t) = f(x, t)$$
2. 常微分方程式の数値解法(Euler法、Runge-Kutta法など)を用いてシミュレーションを実行する。
※数値解法の適用は、連続系の離散化に対応する。

### 数値解法
#### Euler法

Euler法の式は以下

“`math
\begin{aligned}
\frac{d x}{d t} &\approx \frac{x(t+\Delta t)-x(t)}{\Delta t} \\
x(t+\Delta t) &= x(t)+\Delta t f(x, t)
\

元記事を表示

奇跡体験!アンビリバボー

# 事の発端

たまたまTwitterでこちらのアカウントを見つけて、実際にどれぐらいの確率で揃うのか疑問に思った。

仕組みとしては、「奇跡体験」の部分がそれぞれ「奇、跡、体、験」の4通り、アンビリバボーの「ア」「ビ」「リ」「バ」「ボ」の部分がそれぞれ「ア、ビ、リ、バ、ボ」の5通りで、それ以外の「!」「ン」「ー」の部分は固定になっている。
よって、単純計算だと4^4 × 5^5で**800000通り**となる。

実際のアルゴリズムがどうなっているかは不明だが、各文字が出力される確率が同様に確からしいと仮定して検証してみる。

“`python:奇跡体験!アンビリバボー

import random

kisekitaiken = [“奇”, “跡”, “体”, “験”]
unbelievable = [“ア”, “ビ”, “リ”, “バ”, “ボ”]
count = 0

for _ in range(3000000): #無限ループによるマシンクラッシュを避けるため、ループ上限を300万とする
k_choic

元記事を表示

Flask 一覧画面で検索機能実装

Flaskのログイン機能を作ったので、追加機能で
検索機能も作ってみました!
CRUD+ログイン機能の記事はこちらになります?

https://qiita.com/yuuki-h/items/47135ea7a07d0c994275

# コード

“`diff_python:app.py
@app.route(‘/tweets’)
def index():
– tweets = Tweet.query.all()
+ text_input = request.args.get(‘search’)
+ if text_input is None or len(text_input) == 0:
+ tweets = Tweet.query.all()
+ else:
+ tweets = db.session.query(Tweet).filter(or_(Tweet.body.like(text_input), Tweet.title.like(text_input))).all()
return rende

元記事を表示

word2vecで久しぶり遊ぶ

https://zenn.dev/robes/articles/61847e68587b98

元記事を表示

Python の conda のバージョンが 4.14.0 から 22.9.0 になった話

## `conda` のバージョンが飛んだ

Python ver.3.11 がリリースされたので初心者向けになんかいい感じの環境構築資料作ろうかなと思っていた折、
`pip` と `conda` それぞれの環境について書くか?
最近は `mamba` を使うと `conda` より速いのか
`mamba` はちょうどver.1.0.0になったのか!
Mambaforgeを試してみようかなどと調べていたら気づいてしまったんですね。

`conda` のバージョンが `4.14.0` から `22.9.0` へアップデートされてる!

https://github.com/conda/conda/blob/main/CHANGELOG.md#2290-2022-09-14

***

## Versioning の変更

最初は Miniforge のリリースが4.14.0から22.9.0に変わったので何事かと思ったのですが、condaのリリースノートに書いてありました。

今まで `conda` のバージョニングはセマンティックバージョニングでしたが、これからはカレンダーバージョニング

元記事を表示

SConsからpythonなど外部のコマンドを呼び出す方法

# はじめに

GitHubに具体例のリポジトリを上げてあります:[ishioka0222/scons-execute-python-example](https://github.com/ishioka0222/scons-execute-python-example)

# 背景

SConsにはCommandという機能があり、ビルド時にコマンドを呼び出すことができます。
例えば、SConstructファイルに以下のように記述して`scons`コマンドを実行すると、`echo hello, world! > output.txt`が実行されます:
“`python:SConstruct
Command(
target=”output.txt”,
source=None,
action=”echo hello, world! > $TARGET”
)
“`
しかし、デフォルトの設定では、`action`の中でどのコマンドでも呼び出せるわけではないようです。
例えば、Pythonがインストール済みでPATHを通していても、以下のように`action`の中で`

元記事を表示

netkeibaの出馬表から過去出走レースのデータを引っ張ってみた

netkeibaの出馬表から各馬のページに遷移し
データを見比べるのが面倒なため、予想に必要な情報をcsvで出力するためのプログラムを組んでみた
書き方が汚いので改良の余地はありそう

import pandas as pd
import urllib
import requests
import re
import unicodedata
import csv

from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from bs4 import BeautifulSoup
from tqdm import tqdm

def main():

site_url

元記事を表示

Flask ログイン機能 CRUDとセットで実装してみた

Flaskでログイン機能を使ってみたいな、と思い、
CRUDアプリに追加する形で作成しました!!
CRUDは以下の記事を参考にしています。

https://qiita.com/Yu_unI1/items/316e03d94f276695ff13

# 手順
1. [パッケージの準備](#パッケージの準備)
1. [PythonにおけるDBの準備](#pythonにおけるdbの準備)
1. [サインアップ機能](#サインアップ機能)
1. [ログイン機能](#ログイン機能)
1. [ログアウト機能](#ログアウト機能)
1. [できることリスト(宿題的ななにか)](#できることリスト)
1. [コードの全容](#コードの全容)

# パッケージの準備
今回、[CRUDアプリを作成](https://qiita.com/Yu_unI1/items/316e03d94f276695ff13)しているので、その後、新たに必要となるパッケージをAnacondaでインストールします。
“`zsh
% conda install flask-login
“`
CRUDの記事では、pipを使用し

元記事を表示

SendGridの始め方

# SendGridの始め方
AzureでSMTPが送信できなかったので代替手段をとして調査をしたのでメモメモ

# 前提
Windows環境
Python3

## 入口
いくつかある。
1. 構造計画研究所
2. AzureのMarketPlace
3. Twilio SendGrid

無料分が一番多い構造計画研究所さんを基本に記述する

## 登録
下から登録
いろいろと記述箇所があるがすべて埋める
登録が完了すると代替翌日には完了メールが届く

ホーム

## APIの登録
最初にすべきこと
1. Setteings→API Keys
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387683/56024b38-df1a-5cf4-4f76-d18a6c68d6a3.png)
2. Create API Key
![image.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

Stable-DreameFusion (Text to 3D) をwsl2環境でbuildする時、ハマった件

### Stable-DreameFusion(Text to 3D)をwsl2環境でbuildする時、ハマった件

Text to 3D をwsl2環境でbuildする時、ハマったので、その沼からの脱出方法についての記録です。

 まだ、開発途上ですが、テキストから3DCGを生成するText to 3Dというトンデモない技術が公開され、
その論文中では、非公開のGoogleのText to Image技術が使われているのですが、それをオープンソース
のText to Image技術であるStable Diffusionに置き換えたものが、git上で公開されています。

https://dreamfusion3d.github.io/

私は、これをwsl2で実行していますが、基本的にはインストール&実行とも簡単で、誰でも、
Text to 3D を試すことができます。

しかし、この中の
“`
 pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
“`

だけビルド

元記事を表示

SUUMOにある家賃がバカ高い賃貸がなんでバカ高いのか調べる。前編

こちらの記事をご覧いただきありがとうございます。
以前にSUUMOの賃貸情報をスクレイピングし、いろいろ前処理した記事を投稿しました。
そのデータを使って機械学習モデルでいろいろ調べていたのですが、どうにも家賃がバカ高い物件の予測がうまく行きませんでした。
そこで、家賃がバカ高い物件の特徴は何だろうかと調べましたので、ご紹介します。

※過去のSUUMO記事は、この記事の最後にリンクを用意しておきます。

## 事前に行ったこと

大したことは話してませんので、本題だけ見たい人は飛ばしてOKです。
あでも変数重要度の話だけ見たほうがいいかも。

### 回帰予測に使用したモデル

回帰予測にはLightGBMを使用しました。予測精度が高いモデルで有名です。
詳しく知りたい方は各自ググってください。

### 家賃を対数変換

家賃は10万前後が圧倒的に多く、30万を超える物件すらかなり少ないです。
でも超高額物件も含めてある程度正確な予測を出したいので、家賃を対数変換します。

### 変数重要度の確認

とりあえずLightGBMくんに持っている変数全部をぶち込んで予測しても

元記事を表示

[Whisper+ESPnet2(VITS)]音声合成システムを作った備忘録

# 概要
初めての投稿+初めてのMarkdown記法なので読みにくかったら申し訳ないですが、備忘録+結果報告として残しておきます。
youtubeの音声データを用いているので、問題があれば削除します。
40分程度の雑な作りの学習用データでファインチューニングすればここまで行けるよ!ってイメージで結果だけ見ていただいてもかまいません。

以下の2つの構成で、テキストからの音声合成システムを作りました。
1. 収集した音声用データ(一人の音声)を、Whisperを用いて学習用データを作る
2. ESPnet2を用いて学習

今回は2.の部分は以下の記事のまま実行したので、メインで書くのは1.の部分となります。2.の部分は[以下の記事](https://qiita.com/RRR_troisR/items/6288b9bdc6e725aa8440)を参照してください。
ここでは解説しない知識なども載っているので、こちらをまず読むことをお勧めします。

https://qiita.com/RRR_troisR/items/6288b9bdc6e725aa8440

# Whisperと

元記事を表示

[FastAPI]レスポンスのキーに日本語を使う方法[Pydantic]

## FastAPIは日本語に対応しているが一工夫すると吉

まず、下記の様なレスポンスは何の問題も無く動作する。

“`python
from fastapi import FastAPI

app = FastAPI()
@app.get(“/jp”)
def jp():
return {“こんにちは”: “hello”}
“`

しかし、FastAPIの大きな利点であるPydanticを使った型バリデーション及び自動型変換を使用すると日本語が使えなくなる。
下記例ではPydanticオブジェクトのクラス変数名がレスポンスの鍵になるので英語になってしまう。もちろん日本語を変数名に使用することはできない。

“`python
from pydantic import BaseModel, Field

class JP2ENG(BaseModel):
message: str = Field(…)

@app.get(“/jp”, response_model=JP2ENG)
def jp():
return {“message”: “hello”

元記事を表示

管理者権限が必要なスクリプトを動かしたい。

# 管理者権限が必要な時に困る

普通のexeとかbatとか諸々の実行できるファイルであれば右クリックして**管理者権限で実行**とか出来るわけですがPythonのスクリプトはあくまで書類ですからそんなことできません。
だからといってPython自体に細工して管理者権限なんか付与した日には何か動くたびに確認画面が出てきて不安が止まりません。

そもそもの**管理者権限が必要なプログラム**なんてものはそれが必要なのかどうなのか自体を疑う必要があったりもしますが、それでもどうしてもどうにかしたい場合というのはあるものですので…。

## 管理者権限に昇格してコマンドを実行する

あとから調べたらそこそこ出てきたのですが、一応備忘録的に書いておこうと思いました。

“`python:runas.py
from ctypes import windll

def runas():

windll.shell32.ShellExecuteW(
None,
“runas”,
“python”, # コンソール出したくないならpythonw

元記事を表示

OTHERカテゴリの最新記事