[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
# はじめに
移植やってます。
( 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
#はじめに
この記事は、[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
# はじめに
筆者は日曜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___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
# 参考
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の勉強をしていきたいと思います。
自分の勉強のメモとなります。
コードが見づらかったり、正しくない場合があるかもしれません。
実装については怪しい部分がありますので何か気づいたらご指摘いただければと思います。
前回はオートエンコーダについて学びました。
https://qiita.com/tanaka_benkyo/items/ca46cc68b1682827b6e7
今回は、変分オートエンコーダについて勉強していきます。
「はじめてのディープラーニング」をもとにkerasやpytorchでも実装してみるという流れとなります。
### 変分オートエンコーダ (VAE)
変分オートエンコーダでは、潜在空間は学習された平均値と標準偏差を持つ正規分布として表現される。
まずエンコーダにより入力から平均ベクトル$\mu$と分散ベクトル$\sigma$を求める。
これらを基に潜在変数$z$が確率的にサンプリングされ、$z$からデコーダにより元のデータが再現される。
この$z$を調整することで連続的に変化するデータを生成できる。
#### 潜在変数のサンプリング
#本記事について
**「あれ」**とはこれである。
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は
#環境
`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
先日、[「なぜディープラーニングするのか?を自分なりに調べてみた件」](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上でマウスでグ
# 問題
主題の通り、日本語を含む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’をつ
* 本記事は[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の散布図を作成する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()
“`
* 本記事は[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
[議題]
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 エンコーディングとしてソースファイルを認識するため、エラーは
* 本記事は[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を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