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

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

‘method’ object is not subscriptableのありがちなミス

# ‘method’ object is not subscriptableが出たときに確認したいポイント

毎度くだらないミスですが、自分用に投稿します。先に結論を書いてしまうと、メソッド名の後に()が抜けていることが原因でした。

# 前提コード

“`python:
class Hoge() :
def hage(self, list) :
return(list)#リストを返す
hoge = Hoge()
hoge_hage = hoge.hage#ここがマズイ!()が抜けている
hoge_hage[0]#エラー。自分はリストだと思っている。
“`

# 解決
(メソッドオブジェクトは添え字は)ないです、という意味です。
しっかりかっこを入れましょう。

“`python:
class Hoge() :
def hage(self, list) :
return(list)#リストを返す
hoge = Hoge()
hoge_hage = hoge.hage()#ヨシ!
hoge_hage[0]#1919
“`

元記事を表示

【知らなければハマる】AtCoderのF問題は、Python3の代わりにPyPyを使え!

参考サイト:

https://salamann.com/loop_in_python_is_slow

AtCoderのF問題をやっていると、同じ解法なのに、なぜかTLE(時間オーバー)になってしまう事があります。

原因がわからないため、何時間も迷路に迷い込みます。
たとえば、
・関数化と直書きの違い?
・変数を経由させるのと一行で書くのの違い?
など。
実際は、上記の違いは`AC`と`TLE`を分けるほどのレベルではありません。
(実際に時間を計測したら、自分の方が速い場合もある)

違いは、`Python3` で提出したか、 `PyPy3`で提出したかの違いだけでした。

たとえば、2022/11/5 (AtCoder Beginner Contest 276)のF問題

https://atcoder.jp/contests/abc276/tasks

詳細は割愛しますが、フェニック木を使って $O(N^2)$ の内容を$O(log(N))$の計算量で解きます。
しかし・・・・
`Python3`で提出すると、それでも`TLE`になります。
(私のローカルPCの環境では$N=

元記事を表示

トリプルクォーテーション(三項引用符 “””)の中に変数を入れる

結論、以下のようにf文字列にすればいい。

“`sample.py
name = ‘neko’
sentence = f”””My name is {name}.”””
print(sentence)
#My name is neko.
“`

三項引用符だからといって普通の文字列とは大きく違うんじゃないかと
難しく考えてました。
(もちろん仕様など全く同じとは思いませんが)

pythonでMySQLdbライブラリを使っていて
三項引用符の中に変数格納したいな〜と気になったので調査しました。
以上です〜

元記事を表示

JupyterLabをChrome(Edge)のアプリモードで開く

 私の次の記事

https://qiita.com/Mitz-TADA/items/40369a8a526479edb8bc

で作ったポータブル版の Jupyter Lab ですが、Chrome がインストールされていない端末に対応できていませんでした。そこで、Chrome がなければ、Edge のアプリモードで開けるようにしてみました。
 また、ノートブックを notebooks というディレクトリに保存するように指定しています。

 次を `jupyter_lab_config.py` という名前で、起動用のバッチファイルと同じフォルダに保存する。(バッチファイルで指定する名前に合わせれば、他の名前でもよい。)

“`python:jupyter_lab_config.py
import os

c = get_config()

# サーバー起動時のウェブブラウザの指定
chrome = “C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe”
if os.path.isfile(chrome): # Chr

元記事を表示

言語処理学会の論文を自然言語処理してみた

# 概要
恥ずかしながら、[言語処理学会](https://www.anlp.jp/)なるものが日本にあることを全く知らず、とある会合でその存在をたまたま知りました。
ならば、この言語処理学会の論文を自然言語処理すれば、日本の現在の自然言語界隈の動向がわかるのではないかと浅はかにも考えました。
というわけで、やった事はとても簡単です。

– [言語処理学会第28回年次大会(NLP2022)](https://www.anlp.jp/proceedings/annual_meeting/2022/index.html)をスクレイピング
– 便利な[自然言語可視化ライブラリnlplot](https://speakerdeck.com/takapy/zi-ran-yan-yu-ke-shi-hua-raiburari-nlplot-nogoshao-jie?slide=11)で自然言語処理

これだけです。

# 論文PDFをスクレイピングダウンロード
おなじみBeautifulsoupでスクレイピング
“`
from bs4 import BeautifulSoup
import ur

元記事を表示

マイコン開発環境をローカルを汚さずに作る(WSL)

# はじめに
大学の授業でArduino UNO3を使う機会があったのですが、どこを見ても環境を汚す事が前提となっており、環境潔癖症患者の私には到底耐えられませんでした。なのでなんとか試行錯誤して病状を悪化させない環境を作りました。マイコン内で開発する案は考えはしましたが筐体依存性が高くなるためやめました。

# 最終地点
1. ローカル環境を汚さない
1. VScodeの強力な支援機能を使ってArduino開発をする(C++)
1. pythonとの間でシリアル通信をできるようにする
1. sqliteにシリアル値を保存する

# 環境
windows11 22H2

# 使うもの
WSL Ubuntu(なんでもいい)
VScode
PlatformIO
python(sqlite)

# Dockerで環境構築出来なかった
マイコンとはUSBで接続をして開発すると思うのですが、ハードウェア的通信はDockerコンテナをパススルー出来ないようで、コンテナにこもった時点で不可能なのは確定したようです。
# WSL上でUSBを認識させる
[WSLでUSB認識をしよう](https://q

元記事を表示

tf-keras-visで画像Classificationの判断根拠を可視化する(Grad-CAM, Grad-CAM++, Score-CAM, Layer-CAM)

# 要約
– 画像Classificationモデルの判断根拠を可視化する
– CAM系の手法をふんわり理解する
– [tf-keras-vis](https://github.com/keisen/tf-keras-vis)を使ってみる

# 環境
– Python 3.6.8
– tensorflow 2.3.0
– tf-keras-vis 0.8.0

# 手法
より詳しく正確な説明が[こちら](https://tech-blog.abeja.asia/entry/cam-202203)でされています。
ここではふんわりとまとめました。

## Grad-CAM
– 「判断根拠となる領域ほど重みが大きく更新される」という仮定に基づく。
![gradcam.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2902281/d9dc0519-17ec-c830-8558-3ddec40988f5.png)
– 可視化対象クラスにおける最終層の勾配(①)に対してGlobalAveragePoolingを行

元記事を表示

Kaggle : MSCIコンペ復習①【CV】

MSCIコンペが終わったので、復習していく。
まずは今回のコンペで最も重要である要素の一つである「どのようにして最終サブミットのためのモデルを作成するか」を考えていこうと思う。

https://www.kaggle.com/competitions/open-problems-multimodal/overview

# CV と Public LB と Private LB
今回のコンペでは、CVでのデータの分布とLBでのデータの分布が異なっていた。CITE に限定して考えていく。
– TrainデータはDay2,3,4 (Donor1-3)の細胞群 (図では赤色)
– Public LBデータはDay2,3,4 (Donor4)の細胞群 (図では水色)
– Private LBデータはDay7 (Donor1-4)の細胞群 (図では緑色)

このように、Public LBにはTrainにはない**未知のDonor**の情報が、Private LBには**未知のDay・未知のDonor**の情報が含まれていた。そのため、Public LBでは未知のDonorをうまく予測できるモデル

元記事を表示

Kaggle : MSCIコンペ振り返り

先日、MSCIコンペの順位が確定し、銀メダルを獲得することができたので振り返りでも綴っていこうと思う。どんな風に考えて何を試したのかということを時系列順に辿っていく。

![スクリーンショット (83).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746031/8e6a01d4-79d1-e7f9-ca04-364d3055d0d4.png)

# 参加したきっかけ
 一つは、自分の研究内容と比較的近かったから。KaggleはTitanicのチュートリアルをやった程度で本気でやったことはなかったのだが、Twitterでたまたまバイオ系のコンペがあることを知って参加してみた。後述するが、ドメイン知識を活用できた部分はほとんどなかった(笑)。
 また、来年からIT企業で働くことを考えると、コードにもっと慣れておくべきだと考えたことも理由の一つだ。自分の研究ではコードを書くことはあまりしないので、pythonくらいは書けるようになっておきたかった。実際、参加する前と比較したらだいぶ上達したように思う。

元記事を表示

pandasで日時を増減する。

# はじめに

https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess/blob/master/docker/work/preprocess_knock_Python.ipynb

データサイエンス100本ノック(構造化データ加工編) – Python

> P-074: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)に対し、当該週の月曜日からの経過日数を計算し、売上日、当該週の月曜日付とともに表示せよ。結果は10件表示させれば良い(なお、sales_ymdは数値でデータを保持している点に注意)。

において、模範解答は

https://dateutil.readthedocs.io/en/stable/relativedelta.html

を使用している。

[pandas](https://pandas.pydata.org/)にも時間用の関数はあるはずなのでやってみました。

# コード例

“`python:A-074
df_receipt[[‘cus

元記事を表示

VRChatのOSC-Trackerを使ってQuest単機でフルトラを試す

VRChat v2022.4.1にてOSC経由でのトラッカー機能が実装されました。
今回はPythonでOpenVRのトラッカーのデータを取得し、そのデータをOSC経由でQuest2のVRChatに送信してみます。
OpenVR周りはほとんど分からないので、ツッコミどころがあるかと思いますがご容赦ください…

:::note warn
現時点(2022/11/25)ではまだベータ版の機能なので、VRChatのクライアントはベータ版を使用する必要があります。
:::

:::note info
(SteamVRのトラッカーを使ってQuest単機でフルトラしたい人向け)
実際にプログラム書いて動かしてみたいとかでなければ、私が作ったツールの使用をおすすめします。
使い方はリンク先をご確認ください。
https://github.com/takana-v/quest_steamvr_fbt_tool
:::

## 事前準備

### SteamVRをHMD無しで使えるようにする

デフォルトではSteamVRはHMDが無いと動きません。
ダミーのHMDを使用するように設定を変更します。

元記事を表示

Azure MLのパイプラインをPythonから実行する方法

# はじめに
前回Azure MLのデザイナーで作った[こちら](https://qiita.com/kkawano_neko/items/efde483c297bdf1f2559)のパイプラインをPythonから実行してみます。

# Pythonから実行するまで
PythonからAzure MLを使用するには「Azure CLI」をインストールする必要があります。
[公式](https://learn.microsoft.com/ja-jp/cli/azure/install-azure-cli)に載っている方法でインストールをしてください。

Windowsの場合は、[こちら](https://learn.microsoft.com/ja-jp/cli/azure/install-azure-cli-windows?tabs=azure-cli)を開き、「Azure CLIの最新のリリース」をクリックしてインストールファイルを実行すればできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

Pythonで中学方程式の計算

Pythonで中学の「方程式の計算」をする方法を紹介します。レベルは「中1」です。

## はじめに

Pythonがインストールしてあり、使い方を知っていることが前提です。

また、Pythonでの基本的な計算方法を知っておくことが前提です。
こちらの記事を参考にしてください。

https://qiita.com/akiba_burari/items/5bb4c083b30768a33aa1

## 必要なもの

Pythonが使えるデバイス。
パソコン、ラズパイ、タブレット、スマホなど。

※自分はChromebookのLinuxを使っています。

## sympyをインストールする

方程式の計算でも文字式と同様にPythonライブラリ「sympy」を使います。

最新版をインストールしましょう。

“`
pip3 install sympy==1.9
“`

sympyをインストールするには、Pythonがすでにインストールされていることが前提です。
インストールできない人は以下の方法でインストールできるかもしれません。※Linuxの場合です。

“`
sudo apt

元記事を表示

Flask スクレイピングアプリ〜Python とHTML を繋げる。〜

https://qiita.com/sasao-genmaicha/items/7cefab40fbd14ecf5688

https://app-rank-git1.herokuapp.com/

前回の記事ではpython側の処理を紹介しましたが今回はフロントサイドとの連携を解説したいと思います。

まずはベースとなるbase.html
これを使ってトップページと結果ページを作ります。

“`python:base.html






Document
{% block head%}{% endblock %} teradatamlデータフレームでCSVファイルをテーブルにロードする

[Teradata® Package for Python Function Reference](https://docs.teradata.com/r/Teradata-Package-for-Python-Function-Reference/April-2022) [リリース番号:17.10 リリース日付:2022/4]の翻訳です。

# はじめに
PythonでVantageのデータを取得する方法を説明します。
ライブラリとして[teradataml](https://pypi.org/project/teradataml/)を利用します。

:::note info
**teradataml**はTeradata Vantage用のPythonライブラリです。
:::

# データの準備
## sklernのIrisデータセットを読み込む
“`Python:python code
import pandas as pd
from sklearn import datasets
iris = datasets.load_iris()
df = pd.DataFrame(ir

元記事を表示

Pythonでエージェントベースシミュレーション: バイアスのある・ない突然変異(Mesoudi, 2021)

この記事では、Alex MesoudiのRで書かれたチュートリアルをpythonに翻訳する。
下記の記事ではバイアスのある・ない変異についてのモデルが紹介されている。突然変異(mutation)とは、ある形質が別の個体に継承される際に、別の形質へと変わることを意味する。

https://bookdown.org/amesoudi/ABMtutorial_bookdown/model2.html#model-2b-biased-mutation

# バイアスのない突然変異

下記の記事で書いたコードを改変して、バイアスのない突然変異をモデル化してみる。

https://qiita.com/10shimizu10/items/b31927e27c8ab7f5ffc7

リスト同士の論理演算を行う場合、andを用いると後者の値をそのまま返し、orを用いると前者の値をそのまま返すというおかしな挙動をする。そのためリスト同士の論理演算を行う場合は、numpyのlogical_and()メソッドを用いる必要がある。

“`python:python
a = [True, False, F

元記事を表示

初心者?がDeepLabCutを入れてみた。

# はじめに
「え?そこから説明いる?」と思われるほどの本気の初心者です。
MacOS 12.2.1を使ってます。

# DeepLabCutをインストール…しようと思ったら
[前回Anacondaをインストール](https://qiita.com/htkong/items/42e2e913c105b24c4612)したので、目的のDeepLabCutをインストールしてみようと、ターミナルでLet’s git clone!と思ったら、エラー。

“`xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun“`

MacOSをアップデートすると出てくるエラーのようで、Appleの公式開発ツールxcodeが入ってないことによるもののよう。(確かに以前MacOSをアップデートした…)ということで、xcodeをインストール。

“`%

元記事を表示

ROSの開発環境でflaskのrender_templateを使う

簡単ではあるが、地味に記事がない内容だったので、まとめておく

# 動作環境

|項目|説明|
|—|—|
|OS|Ubuntu 20.04.05 LTS |
|ROSディストリビューション|noetic|
|Flask|2.2.2|
|Python3|3.9.14|

# ROSでflaskを使う

## 参考サイト

https://answers.ros.org/question/234418/easiest-way-to-implement-http-server-that-can-send-ros-messages/

## 手順

“`
$ catkin_make
$ source devel/setup.bash
“`

を使用した後、新たなプロジェクトとして

“`
$ cd src
$ catkin_create_pkg ros_flask_test
“`

として、ros_flask_testというプロジェクトを作成。

ros_flask_test内は、(例えばVisual Studio Codeを使うとして)
以下のフォルダ構成とする

![S

元記事を表示

pythonのmatplotlibでsinとcosグラフを作成

sinとcosのグラフを描く(凡例表示)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165847/375428a8-b767-afe0-6108-060650411f75.png)
“`py
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-2*np.pi, 2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, color=’b’, ls=’-‘, label=’y=sin(x)’)
plt.plot(x, y2, color=’r’, ls=’-‘, label=’y=cos(x)’)

plt.xlim(-2*np.pi, 2*np.pi)
plt.ylim(-1.5, 1.5)

plt.xticks([-2*np.pi, -(3/2)*np.pi, -np.pi, -(1/2)*np.pi,
0, (1/2)

元記事を表示

画像内の文字を抽出してみた件について

# はじめに
この記事は**PaddleOCR**や**EasyOCR**を使ってテキスト抽出する方法を紹介します。

**各ライブラリやOCR、~~超解像度化~~の詳しい内容の説明はこちらの記事では省かせてもらいます。**

各ライブラリについては以下を参考にいたしました。

https://axross-recipe.com/recipes/214

https://qiita.com/krkettle57/items/e6f60762c169fdc096bf

# 環境構築
Google Colaboratory
## 1.各ライブラリのインストール
**PaddleOCR**
[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_en/quickstart_en.md)のクイックスタートに沿ってインストールします。
“`python
!python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/

元記事を表示

OTHERカテゴリの最新記事