Python関連のことを調べてみた2020年04月18日

Python関連のことを調べてみた2020年04月18日

Pythonのre.compileは必要か?

#目的
Pythonの正規表現等で使う**reモジュールにおけるcompileは、必要か?**を調べる。

以下のようなもの。

“`
pattern2 = re.compile(‘.ou.’)
“`

#結果
多くの方が書かれているように、**特別、意味はない**と思われます。これによって**速くなるなどのメリットはない。**

ワタシも、速くなるようなことを期待しました。

しかし、

“`
pattern2 = re.compile(‘.ou.’)
“`

のようなわずかなインプットに対して、時間をかけて何をする必要がある?
時間をかけてすることがないのであれば、毎回実施しても良いハズ。

(キャッシュ等の話もありますが、まあ、無理やり感があります。)

結論としては、
**特に意味はない。ただし、コードの書き方が変わりますので、その観点では、意味がある可能性あり。(下記、参照)**

これは、
**compileという言葉は、ちょっと、印象が強すぎるだけかも。。。
例えば、set_pat(pattern)みたいなのだと、誰も、気に留めなかった気がします。**

#参照

元記事を表示

Numpyのarrayとasarrayについて

Python1年生を学習中にnumpy.asarrayという表記が出てきたので調べてみた。
調べるとnumpy.arrayというのも出てきたので違いを解説する

※Numpyには配列を高速に扱うためにndarrayクラスがあり、
ndarray配列を生成するためにnp.array()を用いる。

## np.array(リスト)
“`
import numpy as np
print(np.array([1, 2, 3]))

>>>出力結果
>>>[1 2 3]
“`
続いて
## np.asarray(リスト)
“`
import numpy as np
print(np.asarray([1, 2, 3]))

>>>出力結果
>>>[1 2 3]
“`
では何が違うのか?

#ここが違う
##np.array
“`
copy_array[0] = 100
print(x)
print(copy_array)

>>>[1 2 3]
>>>[100 2 3]
“`
##np.asarray
“`
copy_asarray[0] = 100
print(x)
pri

元記事を表示

[python]ベクトル演算

## ノルム
$ \left\Vert \mathbf{a} \right\Vert_2 = \sqrt{\sum_{i=1}^n a_i^2} = \sqrt{a_1^2 + a_2^2 + a_3^3 + \cdots + a_n^2} $

“`
import numpy as np
a = np.array([1, 2, 3])
n = np.linalg.norm(a)
print(‘norm=’,n)

norm= 3.7416573867739413
“`

## 内積
$ \mathbf{a} \cdot \mathbf{b}= \sum_{i=1}^{n} a_i b_i = a_1 b_1 + a_2 b_2 + a_3 b_3 + \cdots + a_n b_n $

$ \mathbf{a} \cdot \mathbf{b}= \left\Vert\mathbf{a}\right\Vert\left\Vert\mathbf{b}\right\Vert\cos (\theta) $

$\theta$はベクトル$\mathbf{a}$とベクトル$\math

元記事を表示

pipenvのinstall時に、No module named ‘_ctypes’が発生する

## 環境

OS:
Amazon Linux 2
Python:
3.8.1

## 事象

pyenvでpython3.8.1をinstall後、`pip install pipenv`を実行すると以下のエラーが発生し、installできない。

“`
ERROR: Command errored out with exit status 1:
command: /root/.pyenv/versions/3.8.1/bin/python3.8 -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘/tmp/pip-install-shwfwhga/distlib/setup.py'”‘”‘; __file__='”‘”‘/tmp/pip-install-shwfwhga/distlib/setup.py'”‘”‘;f=getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__);code=f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘

元記事を表示

matplotlibで軸とラベルが重なってしまうとき

# はじめに

スクリーンショット 2020-04-18 8.15.15.png

軸とラベルが重なってしまう
matplotlibをするためだけに生まれてきた男

# 解決策

“`python
ax.set_ylabel(“cost”, rotation=270, labelpad=15)
“`

上記のrotationは関係ないです(通常右向きのラベル”cost”を反対向きにさせたいので使っています.)

labelpadを指定することで,図からの距離を指定することができます.

これで以下のように,幅を開けることができました. 

スクリーンショット 2020-04-18 8.17.28.pngPythonGUIによる簡易営業ツール作成:デスクトップアプリ公開

今まで作成したGUIアプリを他の人にも使ってもらえる公開メモ。

1.Spyderで作成したコードを新規作成したフォルダに保存(ファイル名.py)

2.Anaconda Promptで下記コマンド入力

“`
pip install pyinstaller
“`

3.Anaconda Promptで下記コマンド入力

“`
cd C:\新規作成したフォルダ名 #.pyファイル保存のフォルダ先へ移動
pyinstaller ファイル名.py –onefile
“`
4.少し待って、distフォルダに.exeが作成される

元記事を表示

サポートベクトルマシンについて丁寧に理解しようとした(その1:MakeMoonsを例にして多項式/RBFカーネルを試した)

#はじめに
 今回は、サポートベクトルマシンによる機械学習モデルをまとめたいと思います。
 概要は下記です。

+ サポートベクトルマシンの概念を理解する
+ MakeMoonsデータセットを元にして非線形SVM分類器を試す
+ ガウスRBFカーネルを試してみる

##サポートベクトルマシンの考え方を理解する

 サポートベクトルマシン(Suppurt Vector Machine)は「マージン最大化」と呼ばれる基準でモデルの最適化を行う機械学習におけるアルゴリズムの一つです。
 基本的に分類や回帰問題に使用されます。これら分類・回帰問題を解決するアルゴリズムとして(私が認識している)代表的なアルゴリズムが以下のように挙げられます。

+ 決定木系(決定木/ランダムフォレスト/LightGBM等) 
+ ニューラルネットワーク系
+ **(今回)サポートベクトルマシン**
+ k近傍法
+ ロジスティク回帰

 ロジスティク回帰以外は非線形の表現が可能である特徴があります。今回のサポートベクトルマシンは実用的にも取り扱いやすいため、人気のアルゴリズム(のよう)です。

 訳と

元記事を表示

使わなくなったiPhoneでDiscord Botを動かしてみる

##動機
24時間稼働させたいけどレンタルサーバーは面倒だしiPhoneで動いたらいいな~と思ったから

##用意したもの
– iPhone (ios13.4.1の6s)
– Pythonista 3 (バージョンは3.3、1220円で買える)
https://apps.apple.com/jp/app/pythonista-3/id1085978097
– ファイル(デフォルトでインストールされてるやつ)
https://apps.apple.com/jp/app/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB/id1232058109

##StaSh(Pythonista Shell)を入れる
適当にThis iPhone の下に好きな名前のScriptファイルを作って下のコードを書き込む
“`import requests as r; exec(r.get(‘http://bit.ly/get-stash’).text)“`
インストールが終わったらPythonistaを再起動してlaunch_stash.pyを実行する(作ったファイルと同じ

元記事を表示

PCR検査の精度が悪いなら、繰り返し検査すれば良いじゃない?

## はじめに

Qiita にもコロナウィルスのPCR検査の信頼性に関する投稿がいくつか見受けられます。

* [Qiita PCR検査の数を絞るべき理由](https://qiita.com/muka1206/items/40daca8f08c82e94855b)
* [Qiita ベイズの定理で理解する新型コロナウイルスへのPCR検査の検査対象を絞る意義](https://qiita.com/oki_mebarun/items/ee345ba45c7d3752b54c?fbclid=IwAR2rL0zk467k20gzXSn-sqmCTGp17rYA23MEQz2a3cG4zB4nDh_tL6qDvYA)
* [Youtube むやみな検査を行ってはいけない理由、数学的に説明します【条件付き確率】](https://www.youtube.com/watch?v=67FGN9RKmqw)

これらはどれも正しいと思うけど、実際は複数回検査するよね。
そしたらPCR検査がそれほど感度が高くなくても、特異度が完璧でなくても、意味があるんじゃないの?複数回検査することで、どれくらいよく

元記事を表示

pyenvで制作した仮想環境でpip –userがエラーを返す時の対処法

# 問題

pyenvを使ってpython3.8.2の仮想環境を作成し、pipでパッケージをインストールしようとした際、
“`
ERROR: Can not perform a ‘–user’ install. User site-packages are not visible in this virtualenv.
“`
のエラーが出たのでその対象法。
(Mac)

# 対象法

仮想環境のあるディレクトリに行き

“`console
/usr/local/python_env/py3env
“`

pip.confというファイルを作成。

“`console
touch pip.conf
“`

中身に
“`
[global]
user = false
“`
と記載する。

元記事を表示

Pythonのselfの理解を試みる

#おことわり
自分自身、Python始めたてほやほやでわからないことだらけです。
(本記事も間違ってたらごめんなさい)
ほぼ自分の備忘録的な記事になります。

#はじめに
Pythonでクラスについて勉強しているとselfというものが出てくる。
けれども、おまじないのようでいまいちわからないので調べたことをまとめます。

##今回の全体のコード

“`ruby:main.py
class Cat():
def __init__(self,name):
self.name = name

def naku(self):
print(“にゃー”)

tama = Cat(“タマ”)
tama.naku()

Cat.naku(tama)
“`

#本題に入る前に
Pythonでは

“`ruby:main.py
レシーバー.メソッド(引数…)
“`

を、

“`ruby:main.py
レシーバーのクラス.メソッド(レシーバー,引数…)
“`

として、解釈します。
なぜかは知りません。(本当にごめんなさい)
でも、どちらで書い

元記事を表示

Pythonの基礎中の基礎を忘れないために

* そのなかでも基本中の基本

“`python

print ( ) # 表示。文字列は””か’’で囲う。数字はそのまま。
print ( a + b ) # 文字列は左記のように結合が可能です。
print ( 文字 + str ( 数字 ) ) #結合の際は型に注意。
“`

* エラー種別についての整理

“`python
# Name Error とは 定義されていない変数名を利用した場合に発生するエラー。
# Identation Error とは 不要な空白があったり、必要な空白がないエラー。
# Syntax Error とは コードの書き方、構文が間違っているというエラーです。
# Type Error とは 関数等で適切でない型のオブジェクトが利用のエラーです。

# 型とは str(文字列) ・ int(整数) ・ float(浮動小数点数) のことを指す。
“`

* 変数関連についてのまとめ

“`python
a = b # bをaに代入します。また代入する度に上書きされます。
a == b # aとbが等しい (場合、、、
a !=

元記事を表示

Pythonで毎日AtCoder #39

### はじめに
[前回](https://qiita.com/taxfree_python/items/3763ad465aa31d0885ca)
今日のよるかつを書きます。A,Bしか解けませんでした。睡魔には勝てない

### A問題
[ABC069-A](https://atcoder.jp/contests/abc069/tasks/abc069_a)

**考えたこと**
$(n-1)*(m-1)$するだけ

“`python
n, m = map(int,input().split())

print((n-1)*(m-1))
“`

### B問題
[ABC107-B](https://atcoder.jp/contests/abc107/tasks/abc107_b)

**考えたこと**
最近やったのでスラスラ書けました。縦と横で調べる。

“`python
h, w = map(int,input().split())
a = [list(input()) for _ in range(h)]

yoko = []
for i in range(h):

元記事を表示

magenta/TensorFlowを使ってみた

# magenta/TensorFlowを用いてメロディーの自動生成

## 背景
今回Pythonを用いてMIDIデータを操作出来るようなりたいということで,様々なサイトを参照しているうちにMagentaというツールにたどり着きました.

>#Magentaとは
この前、GoogleのMagentaという新プロジェクトがGithubにてオープンになりました。
https://github.com/tensorflow/magenta

>Magentaというのは、ニューラルネットワークを使って、美術や音楽を生成するプロジェクトです。

>機械学習のクリエイティビティを進化させるのと、アーティストと機械学習のコミュニティとなることを目的としています。

>#作曲をするリカレントニューラルネットワーク
Magentaの第1弾として、作曲をするリカレントニューラルネットワーク(RNN)のモデルが公開されました。
LSTM(Long Short-Term Memory)という手法を取り入れたものです。
magenta公式サイト(http://magenta.tensorflow.org/ )

元記事を表示

Pythonチュートリアル(4章)の内容を箇条書きでまとめた

Pythonチュートリアル: https://docs.python.org/ja/3/tutorial/
4章: https://docs.python.org/ja/3/tutorial/controlflow.html
書籍: https://www.oreilly.co.jp/books/9784873117539/

前の記事:[Pythonチュートリアル(3章)の内容を箇条書きでまとめた](https://qiita.com/Wakii/items/cc4158d602a7646758d9)
#”4章 制御構造ツール” テーマ
– 条件分岐
– ループ
– pass文
– 関数定義
– コーディング規約(PEP8)

#4.1 if文
– **if, elif, else** が使える。
– 条件内のブロックはインデントさせる。
– if, elif の後には条件とコロン : が続く。
– *if x < 0:* - *elif x == 2:* - elif は複数記述できる。 - else の後にはコロン : がつく。 - *el

元記事を表示

【Python】初中級者が解くべき過去問精選 100 問を解いてみた【Part1/22】

**目指せ水色コーダー!!!!!!**

ということで、
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】](
https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-%E5%88%86%E9%87%8E%E5%88%A5%E5%88%9D%E4%B8%AD%E7%B4%9A%E8%80%85%E3%81%8C%E8%A7%A3%E3%81%8F%E3%81%B9%E3%81%8D%E9%81%8E%E5%8E%BB%E5%95%8F%E7%B2%BE%E9%81%B8-100-%E5%95%8F)(@e869120さん)
>
AtCoder で水色コーダー、つまりレーティング 1200 を少ない問題数で達成するために、茶色コーダー・緑コーダーにとって適切な教育的良問を 100 問集めました。

こちらの記事の`初中級者が解くべき過去問精選 100 問`
を**Python**で解いていきます!
@e869120さんに感謝!!!!!!

#記念すべき「Part1」〜普通の全列挙

元記事を表示

【LINE Messaging API】チャネルアクセストークンv2.1をPythonで発行する

Messaging APIをご利用の皆様こんにちは。

先日リリースされた公開鍵によるチャネルアクセストークンv2.1発行の
手順が初心者にはあまりにも難解だったので、
初心者なりに試してpythonでチャネルアクセストークンv2.1を発行できた手順を共有します。

https://developers.line.biz/ja/news/2020/04/06/channel-access-token-apis-v2-1/

## 本題

JWTについては他のサイト等で詳しく解説しているので、
詳細は省き、コードのみの解説を行いたいと思います。

今回利用するライブラリは”jwcrypto”になります。
https://github.com/latchset/jwcrypto/

`pip install jwcrypto`

実際のコード

“`python

from jwcrypto import jwk,jwt
import time

#JWTトークンの有効期限(最大30分 エポック秒で指定)
exp = (int(time.time()))+(60 * 30)

#発行

元記事を表示

Pythonでファイルのツリー構造を出力する

# 概要

コマンドのtreeみたいな感じで、Python上でファイルやディレクトリのツリー構造をいい感じに出力する関数を作ったのでメモ。

# 結論

下記の関数にツリーで表示したいディレクトリのパスを与えれば良い。Mac用に実装しているので、パスがスラッシュで区切られないような場合は非対応。

“`python
import pathlib
import glob
import os

def tree(path, layer=0, is_last=False, indent_current=’ ’):
if not pathlib.Path(path).is_absolute():
path = str(pathlib.Path(path).resolve())

# カレントディレクトリの表示
current = path.split(‘/’)[::-1][0]
if layer == 0:
print(‘<'+current+'>‘)
else:
branch = ‘└’ if

元記事を表示

AtCoder Beginner Contest 115 過去問復習

#所要時間
スクリーンショット 2020-04-17 12.26.15.png

#感想
感想を書き忘れていました(2020/04/18)。
授業を受けながら解いていたら中途半端な結果になってしまいました…。
やはり本番のコンテストをイメージして普段からやるべきですね…。

#[A問題](https://atcoder.jp/contests/abc115/tasks/abc115_a)

クリスマスから何日前かでEveの個数を変えるのが賢い方法だと思いますが、場合分けしても面倒ではないので場合分けしました。

“`python:answerA.py
d=int(input())
if d==25:
print(“Christmas”)
elif d==24:
print(“Christm

元記事を表示

Python Scraping get_ranker_categories

# 目標
* 以下のサイトから、各小カテゴリの URL を取得し、ページを開く
* https://www.ranker.com/

# ソースコード・ファイル
“`get_ranker_categories.py
import requests
from bs4 import BeautifulSoup
import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait
im

元記事を表示

OTHERカテゴリの最新記事