- 0.0.1. Python-SPIKE プライムで非同期処理
- 0.0.2. Djangoで作ったWebアプリをherokuにデプロイする~venv環境にて~
- 0.0.3. Raspberry pi への mediapipe のインストール
- 0.0.4. IDSカメラをPythonで制御するためのパラメータ
- 0.0.5. 結局 python でパッケージ分割したプロジェクトにするにはどういうディレクトリ構成にすればいいのか
- 0.0.6. Pythonのlist型とtuple型のメソッド比較
- 0.0.7. PythonのList Comprehension (listcomps) の使い方
- 0.0.8. 歪度、尖度の計算(Python)
- 0.0.9. 全日本大学バスケットボール新人戦(プレ大会)競技日程のPDFをCSVに変換
- 0.0.10. 【GCP】Google Cloud Skills Boostを受講してみた
- 0.0.11. 【Django】タイムゾーン修正方法
- 0.0.12. Pythonでポケモン御三家の種族値をソートする
- 0.0.13. [備忘録] pythonで衛星画像を取り扱う方法 (随時更新)
- 0.0.14. pipenv install reportlab をしたときに cannot find ft2build.hと怒られたときの対処法
- 0.0.15. Mac で Excel VBA を使って日本語を含むフォルダを一括作成する
- 0.0.16. attributeに指定するlocationIdは、locationのlocationIdではない(GoogleMyBusiness API)
- 0.0.17. 深度センサーを使って物体検知をする
- 0.0.18. Scrapyを1ファイルで動かすサンプル
- 0.0.19. 機械学習の基礎の基礎を1から
- 1. はじめに
- 2. 用語の説明
Python-SPIKE プライムで非同期処理
今回はLEGO SPIKEPrimeのPython環境でマルチタスク(非同期処理)を実装してみたので備忘録として残す。
SPIKE アプリケーション内のPythonエディターでコーディングしていくのだが、アプリケーション内のナレッジベースにはSPIKEPrimeを制御するために使うことができるメソッドについての解説は網羅されているが、MicroPythonから提供されているライブラリに関する情報はほとんど掲載されていないため、MicroPython環境で利用できそうな非同期処理用のライブラリを検索した。(かつpipなどによるインストールが不要なものである必要がある)
## 機体
今回のソースコードを動かすために用意した機体は以下のような簡易的なもの。
画像では車型になっているが、
Djangoで作ったWebアプリをherokuにデプロイする~venv環境にて~
# 背景
DjangoでWebアプリを作る際、herokuにデプロイするのはとても手軽で便利です。
しかし、本番用とローカル開発用の両立した設定はなかなかややこしいです。
毎回どうやったらいいか忘れて検索しているため備忘録として残しておきます。# この記事を読んで得られる知見
+ venvでの環境構築
+ Djangoで作ったアプリをheroku向けにデプロイするための設定# この記事で扱わないこと
+ Djangoでのアプリケーション作成方法
+ heroku関連以外のミドルウェア・ライブラリ# 環境・使用ツール
+ VSCode
+ python-3.9.10
+ Django==4.0.2## Pythonのvenv環境を構築する
“`python:Macの場合
python3 -m venv test-python #仮想環境の作成source test-python/bin/activate #アクティブ化
pip install –upgrade pip #pipをアップグレード
“`“`python:Winddowsの場合
Raspberry pi への mediapipe のインストール
## はじめに
`pip install mediapipe` でインストールできなかったため方法を調べていたところ、他のページで紹介されている方法が私の環境ではうまくいかなかったので方法を残しておく。## 環境
本体 : raspberry pi 3
os : raspberrypi os
python : 3.7.10## うまくいかない
他の方の環境ではうまくいったっぽいのでこちらでやるといいかも、、
https://github.com/PINTO0309/mediapipe-bin## インストール
rasoberrypi 用の mediapipe が用意されていたためこちらをりようする。
“`
sudo apt install ffmpeg python3-opencv python3-pip
sudo apt install libxcb-shm0 libcdio-paranoia-dev libsdl2-2.0-0 libxv1 libtheora0 libva-drm2 libva-x11-2 libvdpau1 libharfbuzz0b libbl
IDSカメラをPythonで制御するためのパラメータ
諸事情でIDS ueyeカメラ(UI3250)をPythonから制御したい。
ライブ画像を表示するスクリプトは[公式](https://jp.ids-imaging.com/programming-examples-details/simple-live-image-acquisition-with-the-python-interface-pyueye.html)からダウンロードできる(ログイン必要)。
露光時間・フレームレートを調整しようとして詰まったが、下記を書き加えるとどうやら制御できた。“`Python:Python
from pyueye import ueye
import ctypespixel_clock = ueye.uint(30) #10-128
nRet = ueye.is_PixelClock(hCam, ueye.IS_PIXELCLOCK_CMD_SET, pixel_clock, ueye.sizeof(pixel_clock))time_exposure = ueye.double(20) #ms
nRet = ueye.is_Expo
結局 python でパッケージ分割したプロジェクトにするにはどういうディレクトリ構成にすればいいのか
# tl;dr
https://rinatz.github.io/python-book/ch04-07-project-structures/
で普段他の言語でやってる感じのディレクトリ構成がことごとくアンチパターンになっていたし実際動かないので色々調べてどうやらこの構成ならうまくいきそうだというのの健忘です。
# 結論
“`
project/
+ project/
| + __init__.py
| + __main__.py
| + module.py
| + subpackage1/
| | + __init__.py
| | + submodule1.py
| + subpackage2/
| + __init__.py
| + submodule2_1.py
| + sunmodule2_2.py
+ tests/
+ __init__.py
+ test_module.py
+ test_submodule1.py
+ …
“`## `__init__.py`
`tests` 以外のこれは全部中身を書く。
“`py:p
Pythonのlist型とtuple型のメソッド比較
## シーケンス型
list型とtuple型は、共にコンテナシーケンス型。
list型は可変、tuple型は不変。|型|可変/不変|コンテナ/フラット|
|—|—|—|
|list|可変|コンテナ|
|tuple|不変|コンテナ|
|collections.deque|可変|コンテナ|
|str|不変|フラット|
|bytes|不変|フラット|
|array.array|可変|フラット|
|bytearray|可変|フラット|## list型とtuple型のメソッド比較
|メソッド|説明|list型|tuple型|
|—|—|—|—|
|s[p] (s.\_\_getitem\_\_(p))|位置pにある要素を取得|●|●|
|s.index(e)|eの最初出現位置を探す|●|●|
|len(s) (s.\_\_len\_\_())|要素数|●|●|
|s.count(e)|要素eの出現回数を計算|●|●|
|e in s (s.\_\_contains\_\_(e))|e in s|●|●|
|s.\_\_iter\_\_()|イテレータの取得
PythonのList Comprehension (listcomps) の使い方
Pythonでlist型の新規作成には、listcompsを使用できる。
“`python
word = ‘ABC’# listcomps 可読性が高い
codes = [ord(c) for c in word]
# [65, 66, 67]# 同じことをfor文で繰り返し処理の場合
for c in word:
codes.append(ord(c))
“`また、下記のようにmapとfilterを使用すれば、listcompsと同じ処理を実現可能。
可読性はやはりlistcompsが上だと感じる。(個人的にそう感じる。)“`python
# listcomps
codes = [ord(c) for c in word if ord(c) > 127]
# map と filter
codes = list(filter(lambda c: c > 127, map(ord, word)))
“`listcompsは複数のfor文も使用できるので、便利。
“`python
clothes = [(color, size) for color i
歪度、尖度の計算(Python)
# 背景
単回帰による機械学習のモデルを作成する際に、説明変数が正規分布に従っているか調べるのに便利なので、歪度と尖度を算出する関数を作ってみました。どちらも0に近づくほど、正規分布に近い分布となります。
正規分布でない場合、例えばべき分布だった場合はlogを取るなど、加工を加えます。
# 環境
Google Colaboratory
Python3
pandas, numpy# コード
“`Python
# numpyなどのインポート
import numpy as np
import pandas as pd
“`“`Python
# 歪度の計算関数
def waido(data):
n = len(data) # サンプルサイズ
s = np.std(data) # 標準偏差
mu = data.mean() # 平均
return (n / ((n-1) * (n-2))) * (((data – mu) / s) ** 3).sum()# 尖度の計算関数
def sendo(data):
n = len(dat
全日本大学バスケットボール新人戦(プレ大会)競技日程のPDFをCSVに変換
https://jubf.jp/news/detail/id/271
全日本大学バスケットボール新人戦(プレ大会)競技日程.pdfをCSVに変換
# PDFをダウンロード
“`
wget “https://jubf.jp/index/show-pdf/url/aHR0cHM6Ly9kMmEwdjF4N3F2eGw2Yy5jbG91ZGZyb250Lm5ldC9maWxlcy9zcG9ocF9qdWJmL25ld3MvNjJiMDE1ZDY4M2ZmMi5wZGY=” -O data.pdf
“`# PDFから表を抽出
“`python
import pdfplumbertable_settings = {
# 短い線を破棄
“edge_min_length”: 50,
}pdf = pdfplumber.open(“data.pdf”)
page = pdf.pages[0]
table = page.extract_table(table_settings)
“`# データラングリング
“`python
import pandas as
【GCP】Google Cloud Skills Boostを受講してみた
# はじめに
**Google Cloud Skills Boost**とはGoogle Cloud Platform (GCP)が提供するハンズオンオンライン講座です。6月2日から「みんなで学ぼう Google Cloud 〜 オンライン体験プログラム 〜」というイベントが開催され、これに参加すると無料で1ヶ月GCPを触る事ができ、GC Skills Boostの講義も受講できる様なので参加してみました。そして受講したのがこちらの3つ。ひとつひとつ紹介します。修了証明書。
・**Create and Manage Cloud Resources**
・**Predict Soccer Match Outcomes with BigQuery ML**
・**Perform Foundational Data, ML, and AI Tasks in Google Cloud
【Django】タイムゾーン修正方法
## Djangoのタイムゾーンを日本に変更する方法
デフォルトではUTCが設定されているため、
日本に変更する必要がある## settings.pyを修正する
設定方法は、settings.pyを修正することで可能です。
対象は以下文言です
“`python
LANGUAGE_CODE = ‘en-us’TIME_ZONE = ‘UTC’
“`以下に修正します
“`python
LANGUAGE_CODE = ‘ja’TIME_ZONE = ‘Asia/Tokyo’
“`## 適用確認
“`python
python manage.py shell
“`shellを起動し、現在時刻を確認します
“`python
以下ファイル修正前
In [1]: from datetime import datetimeIn [2]: print(datetime.now())
2022-06-13 12:43:06.603059以下ファイル修正後
In [1]: from datetime import datetimeIn [2]:
Pythonでポケモン御三家の種族値をソートする
初投稿 & タイトルの通りです。
大学院の研究でグラフを描くために最近Pythonを使っているのですが「どうせなら言語丸ごと習得してしまうか~」と思い立ち、着想から約2~3時間ほどで書きました。
ご指摘やアドバイスの他、「こういう機能作ったらいいんじゃない?」などありましたら是非コメントいただけますと大変有り難いです。
“`python
import pprint#御三家の種族値のタプルリスト
pokemon_data = [
(“フシギバナ”, 80, 82, 83, 100, 100, 80, 525),
(“メガニウム”, 80, 82, 100, 83, 100, 80, 525),
(“ジュカイン”, 70, 85, 65, 105, 85, 120, 530),
(“ドダイトス”, 95, 109, 105, 75, 85, 56, 525),
(“ジャローダ”, 75, 75, 95, 75, 95, 113, 528),
(“ブリガロン”, 88, 107, 122, 74, 75, 64, 530),
[備忘録] pythonで衛星画像を取り扱う方法 (随時更新)
本稿は、pythonを使用して衛星画像をどのように処理するかについてまとめます。
①使用するライブラリ
**numpy**と**gdal**と**matplotlib**
※numpyは計算処理のため
※gdalは衛星画像用のライブラリ。ほかにもrasterというものがあるが、私の作業場の親和性はgdalのほうが高かった。gdalのインストールの仕方について、まとめた記事があるのでそちらを参照してください。
②作業
手順としては、
gdalで衛星画像を読み込み
→numpyで加工や計算、衛星画像の素となる配列を作成
→matplotlibで可視化
→scikit-learnやpandasで機械学習用のデータセットにする 感じです。③コード
(1)読み込みと表示
“`python:gdal code
from osgeo import gdal #gdalはosgeoというライブラリの中にあるため、fromでimport
import numpy as nppath=”\your_path”
file_name=”\data.tif”
dat=gdal.Open(p
pipenv install reportlab をしたときに cannot find ft2build.hと怒られたときの対処法
PDF生成ライブラリであるreportlabをインストールしようとしたときに躓いたので備忘録として残しておきます。
## インストールするコマンド
“`
pipenv install reportlab
“`
今回はpipenvを使用しました。(pip+venv)
## エラー内容
“`
cannot find ft2build.h
pipenv.patched.notpip._internal.exceptions.InstallationError: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output
“`
どうやらフォントが無いとのことらしいのでmacにfreetypeをインストールします。## 解決方法
“`
brew install freetype
“`
Pipfile.lockが更新されていることを確認したら次のコマンドで仮想環境にインストールします。
“`
pipenv sync
`
Mac で Excel VBA を使って日本語を含むフォルダを一括作成する
## はじめに
Mac (macOS) でも Excel で VBA によるスクリプトは動くのですが、スクリプトの中に日本語を入れたり、スクリプトで日本語の文字が入ったデータを扱うと、期待しない結果(文字が欠落したり、アンダーバー (_) や クエスチョンマーク (?) に置き換わったりする)になります。このように、Windows PC であれば問題なく動くスクリプトでも、Mac ではそのまま動かないことがあります。
本記事では、Windows 上の Excel で動く VBA スクリプトと同じ動作を Python のスクリプトに置き換えることで、Mac で Excel VBA で日本語を扱う処理を安全に行う方法を紹介します。
## 3行まとめ
すでに Mac に Excel はインストールされているとします。
1. Mac に Python の実行環境をインストールし、Python スクリプトを置く
2. Excel VBA から Python スクリプトを呼べるように AppleScript を決まった位置に置く
3. Excel 上にマクロ呼び出しのボタンを作成して、実
attributeに指定するlocationIdは、locationのlocationIdではない(GoogleMyBusiness API)
# 前置き
GoogleMyBusinessのBusinessInfomationAPIでlocationを更新する際は、location_idを指定する。
locations.attributesを更新するには以下のように行う。“`py
location_location_id = location.get(“name”).split(“/”)[-1]
attr_response = self.api.attributes.get(location_id)
attribute_location_id = attr_response[“name”].split(“/”)[1]attribute = gen_attribute(attribute_location_id)
# attributesAPIにpatchでリクエストするとattributesを更新できる
response = self.api.attributes.patch(location_location_id, attribute, field_mask)“`
attributesを更新する際に
深度センサーを使って物体検知をする
# 動機
AI Dynamics Japan では、様々な物体検知アルゴリズム(画像・映像の中から対象物の位置を特定する技術)をAIや画像処理技術を使って実現していますが、案件の中には、通常の画像からでは人間ですら認識できないようなケースというものがあります。そのような場合に自分達は「Third Eye(第3の眼)」と称して[^1] 特殊なセンシング技術を用いて課題解決することがあります。今回はその中でも「**深度センサー**」を使って物体検知・差分検知する方法をご紹介したいと思います。
[^1]:実際に言っているのは自分(みきを)だけだったりする# LiDARセンサー(Intel® RealSense™)
**LiDAR**(**Li**ght **D**etection **a**nd **R**anging)は、センサーからレーザー光を物体に対して照射し、その反射光を観測することで物体との距離を測定する技術です。今回は [Intel®製 RealSense™ シリーズ](https://www.intel.co.jp/content/www/jp/ja/architectur
Scrapyを1ファイルで動かすサンプル
# 概要
[Scrapy](https://doc-ja-scrapy.readthedocs.io/ja/latest/index.html)をstartprojectを使わず1ファイルで記述し、pythonコマンドで実行するサンプルです。対象サイト( https://blog.qiita.com/ )から各記事のデータを収集してJSON Lines形式でファイル出力します。
**実行コマンド** 終了はCtrl+Cを2回
“`sh
$ python main.py
“`# サンプルコード
“`python:main.py
# 要インストール
# $ pip isntall scrapy
import scrapy
from scrapy.crawler import CrawlerProcess
from scrapy.extensions.httpcache import DummyPolicyclass MySpider(scrapy.Spider):
“””スパイダー https://doc-ja-scrapy.readthedocs.io/j
機械学習の基礎の基礎を1から
はじめに
本稿では機械学習の基礎の基礎として線形回帰について、Pythonのサンプルコードを併せて学んでいきます。
scikit-learnのデータセットであるカリフォルニアの住宅価格データセットから目的変数である住宅価格を予測します。
用語の説明
説明変数
目的変数を説明する変数のことです。例えば、「部屋数」「築年数」「緯度経度」から「住宅価格」を求める場合、この「部屋数」「築年数」「緯度経度」が説明変数となります。
目的変数
説明変数から予測された変数のことです。例えば、「部屋数」「築年数」「緯度経度」から「住宅価格」を求める場合、この「住宅価格」が目的変数となります。
回帰
予測する値が数値など連続する値のときのことです。例えば、「住宅価格」などは連続する値を取ることができるので回帰となります。
分類
予測する値がYes,Noのようなデータが属するクラスである場合のことです。カリフォルニアの住宅価格データセットには入っていませんが、例えば仮に、「ユニ
Growiサイドバーに記事ランキングを作った話
Growi記事ランキング投稿
ページの取得、投稿を行う、`Page`, 更新履歴を閲覧する `Revisions` クラスを定義した `growi` モジュールは別記事[^1]にしま ~~した。~~ す。予定[^1]: GrowiAPIを使って記事を取得・投稿する (まだ書いてない)
この記事はランキング投稿スクリプトの解説記事です。
# 完成品イメージ
## 完成品スクショ
![Screenshot from 2022-06-19 23-28-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113494/b14b766c-b28b-8f58-58f9-7867834188f6.png)
## 完成品標準出力
完成品標準出力
“`markdown
# :heart:ライクが多いランキングトップ101. :arrow_right: [/お試し](https://demo.growi.org/5ee0e945ac935700