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

Python関連のことを調べてみた2023年01月05日
目次

Raspberry Pi 4 を使ったROS入門 第5回 RvizとSLAM体験

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

前回はこちら
[Raspberry Pi 4 を使ったROS入門 第4回 Gazeboを使ったシミュレーション](https://qiita.com/H-Ando-robo/items/436755c05fc652478079)
次回はこちら
[公開までお待ちください]()

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

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

元記事を表示

【condaって何ですか?②】依存関係(ディペンデンシー)って何ですか?

※[condaって何ですか???①](https://qiita.com/leigadget/items/d802f08dc73b8abc9359)の続きになります。先に読んでいただいたほうが流れはつかめるのかなと思います。

はいconda何ですかの2番目です。前回condaとは
あらゆる言語のパッケージ、依存関係、環境管理である。
って話をした上で、condaとpipの一番大きな違いは
pipはpythonのパッケージ管理ができるのに対しcondaはpython以外の様々な言語のパッケージが管理できるって話をしました。

んで今回なんですが、公式ドキュメントにある
あらゆる言語のパッケージ、依存関係、環境管理
の依存関係について少し調べてみたのでここに書いてきます。

[IT用語辞典 e-wordsさん](https://e-words.jp/w/%E4%BE%9D%E5%AD%98%E9%96%A2%E4%BF%82.html)曰く、依存関係とは
ある要素が別の要素の存在や完了などを前提としている関係のこと。主にソフトウェア間の関係やプロジェクト管理におけるタスク間の関

元記事を表示

Pythonでキーボードの割り込みを受け取る

# Pythonでキーボードの割り込みを受け取る

## はじめに
Pythonでキーボードの割り込みを受け取る方法をご紹介します。Pythonでキーボードを操作する方法について解説し、実際に実装例をご紹介します。

## msvcrtとは
msvcrtは、Windows環境で使用するマイクロソフト公式のCランタイムライブラリです。msvcrtを使用することで、PythonからC言語と同等の機能を使用することができます。

## msvcrt.kbhit()とは
msvcrt.kbhit()は、msvcrtモジュールの1つの関数です。この関数を使用することで、キーボードの入力があるかどうかを調べることができます。

## 実装例1
msvcrt.kbhit()を使用して永久ループ中にキー入力を受け取る処理を書いてみましょう。

“`python
import msvcrt

while True:
if msvcrt.kbhit() and msvcrt.getch() == b’q’:
break
else:
print(“This

元記事を表示

[python] 自然数N以下の素数をすべて求める

# はじめに
素数に関するアルゴリズム問題は定番なので、少し勉強した

# 問題
自然数N以下のすべての素数を求めよ

# Code
“`python
from typing import List

def generate_primes(number: int) -> List[int]:

# 素数
primes = []

# for文の作業を減らすために、cahceで繰り返しを減らす
cache = {}

for x in range(2, number + 1):
is_prime = cache.get(x)
if is_prime is False:
continue

# 素数である
primes.append(x)
cache[x] = True

# x の倍数はすべて素数ではないので、cacheのFalseとして処理
for y in range(x*2, number+1,

元記事を表示

Embeddingの可視化(tensorboard)

# やりたいこと
### 前提知識:Embedding(埋め込み表現)とは
ある対象をコンピュータ上で取り扱えるように、数値(ベクトル)に変換した結果のこと。対象をベクトル空間上に落とし込むため、「ベクトル空間に埋め込む」なんて言い方をする[^1]。
[^1]:適切な演算が定義してある数学的な「ベクトル空間」とは限りません。そのため数学的には正しくない用語の使い方ですが、お気持ち的にベクトルに埋め込むという意味で一般的に使われています。

例:自然言語処理で単語のEnbedding
– 「本」 = (1.8, 2.1, …, -0.3)
– 「大学生」 = (1.2, -0.3, …, 0.9)
– 「テキーラ」 = (0.2, -0.5, …, 3.2)
※ 埋め込み方法によってこの数値は異なる。

### 本題
– Enbedding作ったけど、可視化してそれっぽい埋め込みになっているかを確かめたい!

# 先に出力イメージ
tensorboardを使うと簡単にこんなのを作れる。
(3次元に投影するのでぐるぐる回せる)
![image.png](https://qii

元記事を表示

Google Colaboratoryでテストメソッドを指定してunittestを実行する方法

`Google Colaboratory` でテストメソッドを指定して `unittest` を実行する方法を調べたので書いておきます。

サンプルのテスト対象を作っておきます。テストクラスが2つ、テストメソッドは合計4つです。

“`py:サンプルのテスト対象
import unittest

def add(x, y):
return x + y

class AddTest(unittest.TestCase):
def test_add(self):
self.assertEqual(add(1, 2), 3)

class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual(‘foo’.upper(), ‘FOO’)

def test_isupper(self):
self.assertTrue(‘FOO’.isupper())
self.assertFalse(‘Foo’.isupper())

def test_sp

元記事を表示

ABC251~260『 AtCoder ABC251~275 ARC140~151 灰・茶・緑問題 超詳細解説』コピペ用コード

ABC261~270
https://qiita.com/sano192/items/fb8d3bf7fb12690adad0

ABC271~275,ARC140~151,UnionFind,FenwickTree
https://qiita.com/sano192/items/a2b11bd960ccffffa8ea

# ABC251 A

https://atcoder.jp/contests/abc251/tasks/abc251_a

“`python:
# 入力の受け取り
S=input()

# 文字数が1の場合
if len(S)==1:
# Sを6個くっつけて出力
print(S*6)
# 文字数が2の場合
elif len(S)==2:
# Sを3個くっつけて出力
print(S*3)
# それ以外(文字数が3の場合)
else:
# Sを2個くっつけて出力
print(S*2)
“`

# ABC251 B

https://atcoder.jp/contests/abc251/tasks/abc251_b

元記事を表示

ABC271~275,ARC140~151,UnionFind,FenwickTree『 AtCoder ABC251~275 ARC140~151 灰・茶・緑問題 超詳細解説』コピペ用コード

ABC251~260
https://qiita.com/sano192/items/0e5c5fc9ce9ac973c2b8

ABC261~270
https://qiita.com/sano192/items/fb8d3bf7fb12690adad0

# ABC271 A

https://atcoder.jp/contests/abc271/tasks/abc271_a

“`python:
# 入力の受け取り
N=int(input())

# 16進数に変換
N=hex(N)

# 2文字目以降を取り出し(「0x」を消す)
N=N[2:]

# 全て大文字へ変換
N=N.upper()

# Nの文字数が1ならば
if len(N)==1:
# 先頭に「0」をつける
print(“0″+N)
# そうでなければ
else:
# Nを出力
print(N)
“`

# ABC271 B

https://atcoder.jp/contests/abc271/tasks/abc271_b

“`python:
# 入力の受け取り

元記事を表示

ABC261~270『 AtCoder ABC251~275 ARC140~151 灰・茶・緑問題 超詳細解説』コピペ用コード

ABC251~260
https://qiita.com/sano192/items/0e5c5fc9ce9ac973c2b8

ABC271~275,ARC140~151,UnionFind,FenwickTree
https://qiita.com/sano192/items/a2b11bd960ccffffa8ea

# ABC261 A

https://atcoder.jp/contests/abc261/tasks/abc261_a

“`python:
# 入力の受け取り
L1,R1,L2,R2=map(int,input().split())

# L1,L2のうち大きい方
Lmax=max(L1, L2)
# R1,R2のうち小さい方
Rmin=min(R1, R2)

# (Rmin-Lmax)がマイナスなら
if Rmin-Lmax<0: # 0を出力 print(0) # そうでなければ else: # (Rmin-Lmax)を出力 print(Rmin-Lmax) ``` ```python: # 入力の受け取り L1,

元記事を表示

C++を使った1次元オイラー方程式のシミュレーション

# はじめに
冬休みの自由研究の2つ目として、1次元オイラー方程式を解いてみました。前回と同じく、C++でシミュレータを作成し、Jupyter Notebookを使って可視化しました。

https://github.com/shohirose/basic-cfd3

前回の記事:

https://qiita.com/shohirose/items/b47c803950b2880c60d8

# シミュレータの実装

1次元オイラー方程式の保存型表示は次式で与えられます。

“`math
\frac{\partial \mathbf{U}}{\partial t} + \frac{\partial \mathbf{F}}{\partial x} = 0, \\
\mathbf{U} =
\begin{bmatrix}
\rho \\
\rho u \\
\rho E
\end{bmatrix},
\quad
\mathbf{F} =
\begin{bmatrix}
\rho u \\
\rho u^2 + p \\
u \left( \rho E + p \right)
\end

元記事を表示

Polarsでデータサイエンス100本ノックを解く(前編)

データサイエンス100本ノック(構造化データ加工編)をPythonのPolarsで解いていきます[^ref]。

https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess

[^ref]: 上のGithubにあげられている「Colaboratory(Python解答)」を参考にしている部分があります。なお、表示される解答が一致することは確認しています

**本記事では、各問題のポイントや細かい使い方の注意などに絞って解説していきます。**
Polarsの基礎は以下などを参考にどうぞ。1, 2は公式の出してるドキュメントで、3は概要的な説明です(他にもググったら色々出てきます)。

1. [Introduction – Polars – User Guide](https://pola-rs.github.io/polars-book/user-guide/introduction.html)
1. [API reference — Polars documentation](https://pol

元記事を表示

Lambda ローカルでサンプルアプリを動かす

前回の記事でLambdaのローカル開発環境を構築したので、今回はAWSチュートリアルのサンプルをビルドして動かしてみる。

AWSのチュートリアルは下記を参考にする。

https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-getting-started-hello-world.html

前回執筆した記事は下記の通り。

https://qiita.com/nobumichi/items/e876a448b7be21e7e51a

# 作業環境
– Windows11 Pro 22H2
– Windows Terminal
– PowerShell 7.3.1
– Python 3.9.13
– aws-cli 2.9.11
– sam-cli 1.67.0
– git 2.39.0.windows.2

# サンプルアプリ用の作業ディレクトリを作成する
任意の作業ディレクトリを作成する。私は`Documents`配下に`lambda`ディレク

元記事を表示

Pythonでjson.dumpsのsepatatorsオプションを使ってファイルサイズを軽量化する

# はじめに
Pythonの`json.loads()`で、ある.jsonを読み込み、読み込んだ直後のオブジェクトに対して`json.dumps()`を実行すると、実行後にファイルサイズが増加する現象に直面しました。

調査したところ、原因が`json.dumps()`を実行するときの`sepatators`オプションにあり、デフォルト値だとファイルサイズが増加してしまうケースがあることが分かったため、対応方法を備忘録として残します。

# separatorsオプション
`separators`オプションはJSONのKey-Valueおよび要素間の区切り文字を指定するものですが、**デフォルトだと`(‘,’, ‘: ‘)`が指定**され、コロンの後ろに半角スペースが挿入されます。

>separators はもし指定するなら (item_separator, key_separator) というタプルでなければなりません。デフォルトは indent が None のとき (‘, ‘, ‘: ‘) で、そうでなければ (‘,’, ‘: ‘) です。最もコンパクトな JSON の表現を得

元記事を表示

年末年始の勉強振り返り ※Python、JavaScript、Reactの本紹介

# 伝えたいこと:業務でプログラムを直接触らない管理職(おじさん)は定期的に学ぶべき!

## 問題(現状とあるべき姿とのギャップ)
おじさんは若者に、「開発」とか「自動化」とか簡単に言う。
しかし、言っているおじさん自身が、全く知識がないと、「言うだけ?」みたいな空気が流れる。

## 課題(ギャップを埋めるためにやるべきこと)
業務で機会がないなら、業務外で学ぶ!おじさんもチャレンジしている姿を見せ続ける!

### 去年(2021-2022)
Udemyの動画を甘く見ていた!
[Udemy「最新版:Python + Django3 Djangoを基礎から応用まで、アプリケーション開発マスターpython付き」を受けてみた!おじさんは動画時間を甘く見ていた。](https://qiita.com/tsunetsune09/items/3502812e8e41750163b7)

### 今年(2022-2023)
本で勉強する。以下、短期集中のために図書館で借りた本

##### 「1日で基本が身につく!Python」
– 単元が8項目に分かれていて、1項目1時間。
– 参考に

元記事を表示

【Python,Jupyter lab】自分でモジュールを作り、利用する。

自作のモジュールをjupyter lab上で利用する方法について

1,name.pyのファイルを作成

“`python:name.py
import numpy as np

def heikin_ni_plus_one(x):
”’
dataはlist型でデータを渡すこと #この部分にメゾットの説明文を記述できる
”’
return sum(x)/len(x) + 1
“`

2,同じフォルダ内にpythonファイルを配置し、インポート

“`python
import numpy as np
import name #ここで拡張子が.pyのファイル名をインポートする
“`

3,モジュールの中のメゾットを呼び出し

今回は平均にプラス1した値を返すメゾットを利用する
“`python
x = np.array([1,2,3]) #listを作成
name.heikin_ni_plus_one(x) #ここでnameモジュール内のheikin_ni_plus_oneメゾットを利用
“`

4,おまけ

helpメソッドで自分

元記事を表示

オンラインIT講師募集中!

私たちTeamSpartaは、短期間でweb開発系現場で通用する知識を身につけられる、オンライン教育サービス企業です。2019年に韓国ソウルで設立し、現在は世界中で40万人の生徒を持つ、急成長中のスタートアップ企業です。

現在、Teamspartaの日本進出を計画しており、日本人にプログラミングを教えるパートタイム講師を募集しております。もし詳しい内容、または興味がありましたら、下記のグーグルフォームまで気軽にお問合せください。

Google フォーム:【https://forms.gle/UzRF8nUMuzbkpwtj8】

元記事を表示

【Python】ModuleNotFoundError: No module named ‘termcolor’ の対応方法!

# エラー内容
* Pycharmにて、`from termcolor import colored print(‘test’)`で実行すると、以下エラーが表示された。

“`terminal
ModuleNotFoundError: No module named ‘termcolor’ 
“`
# 原因・解決方法
* PycharmでのPreferenceおよびconfigのinterpreterのパスを以下に変更したところ出力に成功。
“`
/Users/xxxxxx/.pyenv/shims/python
“`

* `which pyenv`では`/opt/homebrew/bin/pyenv`が表示されていたので、誤ってこれをPycharmでの環境設定で入れていた。ただ、これはpyenv自体の場所。上記の`.pyenv/shims/python`がpythonのバージョンを管理するパスとなるので、こちらを入れてあげれば解決しました。
* `which python`を実行すると上記のパスが確認できます。

# 備忘録
* PyPIからライブラリ導入することが可能だが

元記事を表示

[Python]海釣り公園の釣果予測をやってみた

# はじめに
こんにちは。Qiita初投稿・データサイエンス勉強中の非ITエンジニアです。
学習の一環として、海釣り公園での釣果予測をやってみました。至らぬ点満載かと存じますが、暖かくご指摘・コメントいただければ幸いです。

# 目次
– 目的・背景
– 課題設定
– 取り組み内容
– データ収集
– データクレンジング
– データの考察
– 学習に使用したデータ
– 学習と精度検証
– まとめ

# 目的・背景
私は趣味として釣りをしています。釣竿やクーラーを持って行ったり釣りに行くのも一苦労なので、なるべく魚が沢山釣れる日に釣りに行きたいです。きっと多くの釣り人が同じ思いを抱いていると思います。
そこで、データサイエンスを使った釣果(何匹の魚が釣れるか)予測にチャレンジすることにしました。

# 課題設定
課題は「海釣り公園のアジの釣果予測(匹/人・日)」としました。
理由は以下の通りです。
– 釣り場 : 海釣り公園
– トイレや手洗い場等の設備が充実している家族に人気の釣り場
– 学習データ(釣果データ)が海釣り公園のブログから入手できる

– 対象魚:アジ

元記事を表示

Pythonの宣言等

Pythonの記載を忘れるので、備忘録として記載。

## 注意点
– ブロックごとにインデントを合わせないとエラーになる
– javaのブロックを示す`{}`はPythonでいうと`:`で示す。

## pythonの変数定義
宣言は型を指定しなくてよい。

“`
配列: array = []
変数: intVariable = 0
strVarinable = “”
連想配列: array2 = {}
“`

## String、int変換方法
基本的に、型が違っていて処理できない場合はエラーになってしまう。
その際は、以下のように型を変換する。
文字列に変換する場合:`str(数値)`
数値に変換する場合:`int(文字列)`

## ユーザー定義関数の宣言方法

“`
def 関数名(変数, 変数)
return 戻したい変数など
“`

## リストの件数を調べる
`len(リスト)`

## リストのソート
“`
リスト.sort() #この場合昇順
リスト.sort(reverse=True) #この場合降順
リスト.sort(key=キーに使

元記事を表示

[python] CSVファイルからピークを検出してグラフにする

# 1 初めに
皆様お久しぶりです(はじめましての方は初めまして)。今回は私が普段行う「**データ整理**」に関連する記事です。皆様は学校の授業や会社で「CSVファイルを整理してグラフ化して」と頼まれたことありませんか?そんな時に0からグラフを作る作業を何度も繰り返すのは時間の無駄です。

今回はそんなCSVファイルから所望のデータを抽出、グラフ化することをpythonで自動化していきたいと思います。また、初心者の方にもわかりやすいように、初学者知識と少しの数学知識(算数知識の方が適当かもしれません)でプログラムを書いていきます。

特に今回グラフにするデータとは下図のように量が莫大で、そのデータの中からある領域を抽出、グラフにするというものです。このプログラムを理解し、コツをつかんでしまえば、読者様の環境に合わせてグラフ化するプログラムを自由自在に書けると思います。

グラフを描画するにあたり**pythonの`matplotlib`ライブラリ**を使用します。また、コードは**オブジェクト指向スタイル**で作成しています。スタイルやpyt

元記事を表示

OTHERカテゴリの最新記事