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

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

Jupyter Labで不要なショートカットキーを無効化する

# 経緯
Jupyter Labをvimのキーバインドで操作するため「@axlair/jupyterlab_vim」を利用していたが、ある時からEscキーを押すとセルの移動モード(Commandモード)に切り替わるようになってしまったため、Vimでの操作に支障が出るようになった。

# 概要
Jupyter Labデフォルトの「EscキーでCommandモードに切り替え」というショートカットを無効化し、jupyterlab_vimのEscキーに割り当てられた以下のショートカットを有効化する。

* Esc:ノーマルモードへの切り替え
* Shift + Esc: Jupyter LabのCommandモードへの切り替え

# 設定方法

1. Jupyter Labのメニューから「Settings > Advanced Settings Editor」を開く。

2. 「Keyboard Shortcuts」タブを開き、「User Preferences」に以下の通りデフォルトのEscキーに割り当てられたショートカットを無効化するための設定を入力する。入力後は右上の保存ボタンを押す。

元記事を表示

【Django】SNS app作成手順03-ログインページの作成

—————login.html作成———-

{% extends ‘base.html’ %}

{%block content%}

{{context}}

{% csrf_token %}

Please login


[py2rb] 辞書の値が関数

# はじめに
移植やってます。
( from python 3.7 to ruby 2.7 )
# 辞書の値が関数 (Python)
“`python
def a(k, v):
print(k, v)

def b(k, v):
print(k, v)

h = {‘func a’: a, ‘func b’: b}

h[‘func a’](‘A’, 1)
h[‘func b’](‘B’, 2)

# A 1
# B 2
“`
辞書の値に関数を入れておいて、引数を渡します。
動的プログラミングですねえ。
# 失敗 (Ruby)
“`ruby
def a(k, v)
p [k, v]
end

h = {‘func a’ => a}

main.rb:1:in `a’: wrong number of arguments (given 0, expected 2) (ArgumentError)
“`
ハッシュにメソッドを入れた時点でエラーになります。
# 成功 lambda (Ruby)
“`ruby
a = lambda { |k, v| p [k, v

元記事を表示

[py2rb] lambda

# はじめに
移植やってます。
( from python 3.7 to ruby 2.7 )
# lambda (Python)
“`python
_identity = lambda x, **kw: x
“`
https://docs.python.org/ja/3.7/glossary.html#term-lambda

いわゆる無名関数ですね。
# lambda (Ruby)
“`ruby
_identity = ->(x, **kw) { x }
# or
_identity = lambda { |x, **kw| x }
“`
https://docs.ruby-lang.org/ja/latest/method/Kernel/m/lambda.html

`lambda`と`Proc`の違いの一つに引数の数が違っている場合があげられますが、可変長引数を使用するとエラーにならない様です。

“`ruby
identity2 = ->(x, **kw) { x }
puts identity2.call(2)

# 2

identity1

元記事を表示

簡単な対話bot作ってみた

#はじめに
この記事は、[SLP KBIT AdventCalendar2021]( https://adventar.org/calendars/6706 “AdventCalendar2021”) 21日目の記事です。(物凄く遅れました…)
Python学習のチュートリアルとして簡単な対話botを作りました。
(といっても会話が支離滅裂なので期待しているようなbotではありません)

#目次
・環境
・コードの解説
・実行結果
・おわりに

##環境
Python 3.9.7
Spyder

#コードの解説
responder.pyはユーザーの入力した文字列に対して反応を示すためのプログラムです。あらかじめユーザーに返すフレーズをリストにまとめて置き、それをランダムに出力することで会話をしているように見せています。

“`responder.py
import random

class Responder(object):

def __init__(self, name):
self.name = name

def response(self

元記事を表示

WSLでUBI8ベースの軽量JupyterLabコンテナイメージ(Python 3.8)を使ってみた

# はじめに

筆者は日曜Pythonプログラマーのため、JupyterLabコンテナを普段使いしています。
で、プログラム用途を鑑み、PythonのVerやらPythonライブラリのVerやらを変えるのに、複数のJupyterLabコンテナイメージを切り替えることで対応してたりしました。

のですが、JupyterLabコンテナイメージはファイルサイズが大きのがちょっとネックでして。。。
もっと軽量なJupyterLabコンテナイメージを使ってみたい、というのが事の始まりです。(と、2021年12月でPython 3.6がEOLになったのも少し)

本稿では、「**JupyterLabコンテナイメージ(Python 3.8)をJupyterHubから起動する**」までの過程を紹介してゆく。

# 前提条件(環境準備)

筆者の過去投稿を参照いただけると。。。GPU搭載Windows11のPCが大活躍しますw

https://qiita.com/Blaster36/items/6dce4cf0b4ada88ef639

https://qiita.com/Blaster36/item

元記事を表示

#Slack アプリ開発:モーダルでのバリデーションについて

![Slack___local_SlaIM___George_Dev.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22294/40275dce-dac1-c32a-8cca-7f9b4b0f66ce.png)

モーダル、使ってますか?
めちゃ使っているのですが、今回はバリデーションについてです。
上記のようなモーダルを作っているのですが、URL欄にはhttpが含まれたものがほしい。ユーザーIDはユニークじゃないとだめなので、重複した場合はエラーを返したいという場合にどうしましょう。というものです。

答えはこちらに書かれています

https://slack.dev/bolt-python/ja-jp/concepts#view_submissions

入力ウィンドウのビューはこんな形で開かれています。

“`Python
client.views_update(
view_id=body[“view”][“id”],
hash=b

元記事を表示

Pythonを用いたPC(Mac) – LEGO Mindstorms EV3間のMQTT通信について

# 参考

https://qiita.com/yohei1126/items/de355f540a83743213fb

https://qiita.com/ekzemplaro/items/95c31c684a2faef656d1

https://www.mochinoki-labo.com/python-mqtt-intro/

# 概要 
PC(Mac)でBroker(mosquitto)を立ち上げ、LEGO Mindstorms EV3とのMQTT通信を行った際に
少しつまずいたのでメモ

# 環境
**PC**
– macOS Catalina バージョン 10.15.7
– Homebrew 3.3.10
– Python 3.8.5(paho-mqtt使用)
– mosquitto version 2.0.14

**EV3**
– OS : ev3dev
– Python 3.5.3

# 内容
PCでBrokerを立ち上げPCからメッセージをEV3へ送信する
PC(Broker, publisher) → EV3(subscriber)

**PC**
1. m

元記事を表示

pythonでGANの勉強2 変分オートエンコーダ・畳み込みVAE

pythonでGANの勉強をしていきたいと思います。

自分の勉強のメモとなります。
コードが見づらかったり、正しくない場合があるかもしれません。
実装については怪しい部分がありますので何か気づいたらご指摘いただければと思います。

前回はオートエンコーダについて学びました。

https://qiita.com/tanaka_benkyo/items/ca46cc68b1682827b6e7

今回は、変分オートエンコーダについて勉強していきます。
「はじめてのディープラーニング」をもとにkerasやpytorchでも実装してみるという流れとなります。

### 変分オートエンコーダ (VAE)
変分オートエンコーダでは、潜在空間は学習された平均値と標準偏差を持つ正規分布として表現される。
まずエンコーダにより入力から平均ベクトル$\mu$と分散ベクトル$\sigma$を求める。
これらを基に潜在変数$z$が確率的にサンプリングされ、$z$からデコーダにより元のデータが再現される。
この$z$を調整することで連続的に変化するデータを生成できる。
#### 潜在変数のサンプリング

元記事を表示

【python初心者向け】駿台予備校広告の「あれ」をプログラミングの暴力で台無しにする

#本記事について

**「あれ」**とはこれである。

https://news.yahoo.co.jp/articles/07d7170880e70142c3664b9e73b71cad03ff9e2e

**「GAKKOUの6文字を並び替えてできる360個の文字列を辞書式に並べるとき、100番目の文字列を求めよ」**
駿台予備校が大学入学共通テスト試験前に出した広告、そこにぽつんと記載の合った問題である。

この問題は数Aをしっかり勉強していればそこまで難しくない。
ここまでしっかり勉強してきた受験生なら電車の待ち時間にノートを広げて計算すれば解けるだろう。
そうして計算した結果出てくる答えが絶妙で、受験生に感動とエールを送る素晴らしい問題とSNSで非常に話題になった。

**本記事はそんな受験生の涙ぐましい努力をコンピューターという圧倒的計算能力で無に帰すというものである。**

上記リンクに解き方も書いていたので見てみよう。
>・ABCD…のアルファベット順でGAKKOUを置き換えます。Aは最初(1番目)だから1、BCDEFがないのでGは2番目、そう考えるとKは3、Oは4、Uは

元記事を表示

Pythonで日本の新型コロナ患者情報取得

#環境
`Win10`
`Python 3.8.10`
・`requests==2.25.1`
・`pandas==1.3.1`

#実装
“`py
import requests as rq
import pandas as pd

url = ‘https://covid19-japan-web-api.vercel.app/api/v1/positives?prefecture={0}’

prefectures = [‘北海道’,’青森県’,’岩手県’,’宮城県’,’秋田県’,’山形県’,’福島県’,’茨城県’,’栃木県’,’群馬県’,’埼玉県’,’千葉県’,’東京都’,’神奈川県’,’新潟県’,’富山県’,’石川県’,’福井県’,’山梨県’,’長野県’,’岐阜県’,’静岡県’,’愛知県’,’三重県’,’滋賀県’,’京都府’,’大阪府’,’兵庫県’,’奈良県’,’和歌山県’,’鳥取県’,’島根県’,’岡山県’,’広島県’,’山口県’,’徳島県’,’香川県’,’愛媛県’,’高知県’,’福岡県’,’佐賀県’,’長崎県’,’熊本県’,’大分県’,’宮崎県’,’鹿児島県’,’沖縄県’

元記事を表示

指定した相関係数になるデータ行列の生成

以下の関数 gendat2 は,相関係数が r となる n × 2 行列を求める。

r = np.corrcoef(x.T)[0,1]

“`python
import numpy as np
from scipy.linalg import eigvals, inv, svd, cholesky
from scipy import random
from scipy.stats import zscore

def gendat2(n, r):
r = np.array([[1, r], [r, 1]])
if any(eigvals(r) <= 0): raise Exception("'r' is not positive definite.") x = random.randn(n, size[0]) x = zscore(x, ddof=1) r2 = np.corrcoef(x.T) solver2 = inv(r2) vec, val, junk = svd(r2, full_matrices=False) coeff = s

元記事を表示

3次元で描写した図を動画で保存する

先日、[「なぜディープラーニングするのか?を自分なりに調べてみた件」](https://qiita.com/tan0ry0shiny/items/e0d4233de1e59c4d4c03)を投稿させて頂きましたが、初投稿のテストも兼ねていました。今回から少しずつ詳細に書いていければと思います。

#今回の目的
TensorFlowで学習したモデルを3次元空間に描写します。

#やった事
ANDゲートを単純パーセプトロンで実装しました。重みは自動微分で機械的に求められます。詳細は以下のColabのリンクからご覧下さい。

[Colab: ニューラルネットワークでANDゲートを解く.ipynb](https://colab.research.google.com/drive/1HyYvulakETtZgVWiibYoAICY8A6V2epX?usp=sharing)

モデルを作った後、0から1までの入力に対して出力を3次元空間にプロットしてみました。実際にプロットしてみたらマウスでグリグリ動かして良く見てみたくなったので、アニメーションを保存してみました。本当はColab上でマウスでグ

元記事を表示

django-import-exportにて日本語を含むcsvのインポートの際のエラーと応急対策

# 問題

主題の通り、日本語を含むcsv(utf-8)で読み込ませると以下のようなエラーが表示される

Imported file has a wrong encoding: ‘cp932’ codec can’t decode byte 0xef in position 0: illegal multibyte sequence

いろいろ文字コードを変えてみたが同様のエラーが発生

# 対策

もっと良い方法があるとは思いますが、以下に応急的な対策を紹介します

## csv書き込みの際はutf-8(BOM付き)

pythonにてcsvを作成する際

“`python
with open(csv_path, ‘w’, encoding=”utf_8_sig”) as f:
writer = csv.writer(f)
writer.writerows(records)
“`

と、このようにencodingをutf-8(BOM付きのほうが良い)に指定

Windowsにてエクセルで読み込む際BOM付きでしか正常に読み込まれない

BOM付きは’_sig’をつ

元記事を表示

【Project Euler】Problem 38: 倍数の連結でパンデジタル

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 38. 倍数の連結でパンデジタル

原文 [Problem 38: Pandigital multiples](https://projecteuler.net/problem=38)

**問題の要約:以下の例のように$n>1$に$1,2,3, \dots$掛けたものを連結した9桁のパンデジタル数の最大値を求めよ**

“`math
192 \times 1 = 192 \\
192 \times 2 = 384 \\
192 \times 3 = 576 \\
192 384 576 \rightarrow パンデジタル数 \\ \\
9 \times 1 = 9 \\
9 \times 2 = 18 \\
9 \times 3 = 27 \\
9 \times 4 = 36 \\
9 \times 5 = 4

元記事を表示

相関係数が0.63の散布図を作成する

相関係数が0.63の散布図が話題になっているようなので、相関係数が0.63の散布図を作成するPythonスクリプトを作ってみました。

以下のコードは Google Colaboratory 上での動作を確認しています。

# 乱数の散布図

まずは乱数を使った散布図の描きかたと、相関係数の計算の仕方です。

“`python
import numpy as np

n_data = 20
X = np.random.rand(n_data)
Y = np.random.rand(n_data)
“`

“`python
import matplotlib.pyplot as plt

coeff = np.corrcoef(X, Y)[0, 1]
plt.figure(figsize=(5,5))
plt.title(“correlation coefficient = {0:.3f}”.format(coeff))
plt.scatter(X, Y)
plt.xlim([0, 1])
plt.ylim([0, 1])
plt.grid()
plt.show()
“`

元記事を表示

【Project Euler】Problem 37: 切り捨て可能素数

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 37:切り捨て可能素数

原文 [Problem 37: Truncatable primes](https://projecteuler.net/problem=37)

**問題の要約:11個しかない左切り捨て可能かつ右切り捨て可能素数の合計を求めよ**

[切り捨て可能素数(Wikipedia)](https://ja.wikipedia.org/wiki/%E5%88%87%E3%82%8A%E6%8D%A8%E3%81%A6%E5%8F%AF%E8%83%BD%E7%B4%A0%E6%95%B0)に説明があります。左右どちらの数字を消していっても素数になる数のことです。上限が書いてありませんが11個しかないということなので11個見つかった時点で終了します。

“`python
from sympy impo

元記事を表示

Pythonをターミナルで正しく表示させる

[議題]
myapp.pyというPythonファイルの結果を、ターミナルで表示させようと、
いつものように「% python myapp.py」と書いたら、

“`
% python myapp.py
Non-ASCII character ‘\xe3’ in file myapp.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
“`
というエラーが出現。 どうやって解決させる?

[原因]
 エンコーディング認識の違いによって python がソースコードを正しく解釈できなかったため。
ソースコードのエンコーディング方式を指定しないと、ソースコードが正確に解釈されないため、このようなエラーが出る。

 これは、Pythonのバージョンの違いで起こる。
私の場合、Python 2.7 の環境で、このエラーが起こってしまった。
Python 3.x ではデフォルトで、UTF-8 エンコーディングとしてソースファイルを認識するため、エラーは

元記事を表示

【Project Euler】Problem 35: 循環素数

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 35:循環素数

原文 [Problem 35: Circular primes](https://projecteuler.net/problem=35)

**問題の要約:$p<10^6$の素数で桁を循環させたすべての数も素数になるものの合計を求めよ** まずはそのまま$p<10^6$のすべての素数で循環素数のチェックをして数えます。 ```python from sympy import nextprime, isprime def isCircularPrime(pstr): for i in range(len(pstr)-1): pstr = pstr[1:]+pstr[0] # rotate one digit if not isprime(int(pstr)):

元記事を表示

Seleniumでループが上手く回らない時の対処法

# スクレイピングを実装していたらエラーメッセージが出た!
Seleniumをpythonを使用して実装していたら以下のようなエラーメッセージが表示された。
解決までに時間がかかってしまったので参考になればと思い投稿します。

“`
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is
not attached to the page document
“`

# 前提条件
Python 3.7.12
selenium
Chrome

######手順
dockerで環境を用意

pythonで目的のサイトのスクレイピング処理を実装

それをループで処理する。

# エラーの出たコード
“`python:sample.py
data = [1,2,3,4,5]
for i in data:
driver.find_element_by_xpath(“目的のxpath”).click()
driver.fin

元記事を表示

OTHERカテゴリの最新記事