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

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

Pythonで書くフーリエ級数の検算用コード

理工系の学部生にとって厄介なのはフーリエ級数の手計算である。
一通り計算したはいいものの、結果が汚すぎて自信がないということはよくある。
そこでPythonで検算できるコードを書いたので備忘録も兼ねて掲載する。

例えば

“`math
f(x)=x \ \ \ \ (-\pi \le x \le \pi)
“`

をフーリエ級数展開すると

“`math
f(x)=-\Sigma_{n=1}^{\infty}\frac{(-1)^n}{n}\sin(nx)
“`

となる。これを検算してみよう。

“`python
import numpy as np
import matplotlib.pyplot as plt

#x軸を定義する
x = np.arange(-np.pi,np.pi,0.01)

#シグマの中身の関数
def func(k):
return -1*(((-1)**k)/k)*np.sin(k*x)

#シグマ演算の関数. 引数で和の範囲を指定.
def sigma(func,frm,to):
ret = np.zeros_like(x)

元記事を表示

PyCaretとGoogle Colaboratoryによる機械学習超入門

## 概要

本記事は機械学習超入門として、[PyCaret](https://pycaret.org/)と[Google Colaboratory](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)を使って、比較的少ない準備、コード量で機械学習を試す方法について紹介します。

今日、[自動機械学習(AutoML)](https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-automated-ml)が開発されています。これにより、機械学習はコーディングや機械学習のスキルはなくても様々な人が今よりも低いハードルで利用できる技術になりつつあるかと思います。それゆえ、機械学習とはどんなものなのか、まずは簡単に触ってみたいという人も増えるかと思い、本記事を執筆しました。

※本記事を読みながら試してくださった方々へ。本記事はローコンテクストであるほど良いと思っています。わかりにくい表記や追記すべき内容などありましたら気兼ねなく編集リクエストや、

元記事を表示

Biopython Tutorial and Cookbook和訳(4.3)

## 4.3 Feature, location and position objects
[4.2へ](https://qiita.com/chaos44/items/e9e7cb400b87084be09e)

#### 4.3.1 SeqFeature objects

Sequence features are an essential part of describing a sequence.
**featureは配列を説明するのに必須な部分です。**

Once you get beyond the sequence itself, you need some way to organize and easily get at the more “abstract” information that is known about the sequence.
**単なる配列の枠を超える時、それを整理、および簡単に複雑な情報にアクセスする方法を持つべきです。**

The design is heavily based on the GenBank/EMBL featur

元記事を表示

memo

“`python
import pandas as pd

# それぞれの属性の要素の出現回数をカウントしたpandas.seriesのリストを返す
def count_attibute_value(df):
list_of_attribute_series=[]
columns_list = df.columns.values
#attribute_num = len(columns_list)

for attribute in columns_list:
list_of_attribute_series.append(df[attribute].value_counts())
return list_of_attribute_series

if __name__ == ‘__main__’:
#example
df = pd.DataFrame({“item”:[c for _ in range(5) for c in [“apple”, “banana”,”orange”]],”rank”:[chr(

元記事を表示

Seleniumの最下部スクロールコマンド(window.scrollTo)が効かない場合の代替方法

# 概要
* ページ最下部までのスクロールする方法は、ググると”window.scrollTo”の情報が返ってきます。
* ただし、サイトによってはSeleniumによるページの最下部スクロールがなぜか効かないサイトがあります。
* その場合は、クリックと、ページダウンのキー入力を使うことで下スクロールができたので本稿にまとめます。

# 方法
##(某サイトで)上手くいかなかった最下部スクロール方法
“`
driver.execute_script(“window.scrollTo(0, document.body.scrollHeight);”)
“`
##上手くいった方法
“`
# 一度クリックしてからページダウンするとスクロールができました
# 最下部前スクロールしたければPAGE_DOWNを繰り返す
driver.find_element_by_tag_name(‘body’).click()
driver.find_element_by_tag_name(‘body’).send_keys(Keys.PAGE_DOWN)
“`

# 最後に
* サイトによ

元記事を表示

contextlib.contextmanager

“`py
import contextlib

# def tag(name):
# def _tag(f):
# def _wrapper(content):
# print(‘<{}>‘.format(name))
# r = f(content)
# print(‘‘.format(name))
# return r
# return _wrapper
# return _tag
#
#
# @tag(‘h2’)
# def f(content):
# print(content)
#
# #f = tag(‘h2’)(f)
#
# f(‘test’)

@contextlib.contextmanager
def tag(name):
print(‘<{}>‘.format(name))
yield
print(‘‘.format(name))

# @tag(‘h2’)
# d

元記事を表示

エイリアシングが発生している画像を生成してみる

## 序論

アナログ信号をデジタル信号に変換するとき、サンプリング周波数$f_s$の1/2の大きさの周波数までしか、観測することが出来ません。
この周波数をナイキスト周波数と呼びますが、このナイキスト周波数を超える振動が含まれていても観測することが出来ないことが知られています。
このナイキスト周波数を超えた振動は低周波数として処理されます。
ナイキスト周波数を超えた高周波数の振動を低周波数として処理してしまうことをエイリアシング(折り返し雑音)と呼びます。

$x_0$から$x_{N-1}$までの$N$個の数字を持つデータの離散フーリエ変換を考えると、

“`math
C_k = \frac{1}{N}\sum_{m=0}^{N-1} x_me^{-i\frac{2\pi km}{N}}
“`
“`math
k = 0, 1, 2, …, N-1
“`

kに対応する周波数は

“`math
f_k = \frac{kf_s}{N}
“`
となります。
kは(N-1)まで存在するので,$f_{N-1}=\frac{(N-1)f_s}{N}$となり、$f_s/2$のナイキス

元記事を表示

python。プログラミング初心者が行き当たりばったりで物を作れるのかパート①

この投稿は何かを学べる投稿ではありません。初心者がプログラミング学習をして躓いたところをつらつら書くだけの投稿になります。。。orz
python 得意だよ!なんか簡単なこと悩んでんなこいつ。っていう優しい心の持ち主はアドバイスお願いします。。

環境:
windows
Anaconda3
python3.7.6

pythonを使って、youtubeの動画のサムネからある特定の画像を含んでいる動画一覧を、スプレッドシート(Excel)に、URL等を書き出すことをしたいと思っています。

しかし、問題があり、私は一切仕事でプログラミングをしたことがありません。VBAは書いたことあるよ、就活の時3か月くらいJAVAの文法覚えたよっていうぐらいです。そして、プログラミングできる友達がいません。(笑)
では諦めるのか。qiitaで検索してみるといろいろすぐ使えそうなプログラムを乗せてくれる人たちがいるんですね。なんとかなりそうだという甘い期待で動き出します。

#最終目標
私が最終的にやりたいのは、スマホゲームの「クラッシュロワイヤル」のトッププレイヤーの動画を数多く出している「Stat

元記事を表示

pythonでPタイル法を用いて閾値を決定する

# 経緯

大学の講義で、Pタイル法を用いて閾値を求める課題が出たため、python3を用いて実装しました。

#pタイル法とは
ヒストグラムに面積をX%で分割する点を、閾値として決定するアルゴリズムのことです。

#コード
“`python: ptile.ipynb

from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
file = “./sample.png”

#閾値を返す関数
def decideTh(area, ret):
#閾値
th = 0
#背景
background = 0
#面積の比率
bg_ratio = 1 / 2
count = 0
#背景を求める
for i in ret[0]:
background += i
if background == 0:
ratio = 0
else:
ratio =

元記事を表示

Python Node.js 文字操作

Python, Node.jsともに以下の順で変換
16進数文字列 ⇔ バイナリ ⇔ 文字列 ⇔ Unicode(10進数) ⇔ 16進数文字列
そして、デフォルトのエンコーディングはUTF-8
#Python
“`python
str_data = “あ”
encoded = str_data.encode() #b’\xe3\x81\x82′
hex_str = encoded.hex() #”e38182″
encoded = bytes.fromhex(hex_str) #b’\xe3\x81\x82′
str_data = encoded.decode() #”あ”

unicode = ord(str_data) #12354
sixteen = hex(unicode) #’0x3042′
unicode = int(sixteen,16) #12354
str_data = chr(unicode) #”あ”
“`

#Node.js
“`javascript
let strData = “あ”;
let encoded = Buffer.from(strData

元記事を表示

pythonで書くガチャ-実践編2・ステップアップガチャの基本-

#内容
実際のゲームにおいては、色んな種類のガチャがありますが、
今回は、その中で`ステップアップガチャ`という種類のものを作成します。

**以下のソースを改修して実装しています**
>[pythonで書くガチャ-実践編1-
](https://qiita.com/saib-ryo/items/cb792f90cc24259da7fa)

##ステップアップガチャとは?
ステップアップガチャとは、ユーザーが対象となるガチャの`実行回数`によって、**抽選対象アイテム**や、**抽選の設定**が変わっていくガチャになります。
`ステップアップ`という名称の理由は、基本的には実行回数が多くなると、`より良いアイテムが入手しやすく`なるように設定されているからです。
以後、回数を重ねることを`ステップアップ`という言葉で表していきます。

##ステップアップガチャのデータ構造
まず、`ステップアップ`した場合、何が変化するかを決めます。
今回は、[前回](https://qiita.com/saib-ryo/items/cb792f90cc24259da7fa#%E3%82%AC%E3%8

元記事を表示

manなど空白と改行が邪魔な英文をGoogle翻訳に投げるPythonスクリプト

manとかRFCとかテキストベースの情報をGoogle翻訳にかけたいけど、空白とか改行が邪魔で変な感じになりますよね。私は、こんな感じでやってます。

まず、Pythonでクリップボードの中身を取得し、空白やら改行を除去します。

“`py
#!/usr/bin/env python

import pyperclip
s = pyperclip.paste()

s = s.replace(“\r”,” “)
s = s.replace(“\n”,” “)

while -1 != s.find(” “):
s = s.replace(” “,” “)

print(s)
pyperclip.copy(s)
“`

これを起動して、Google翻訳のコマンドライン版であるtransにパイプでつなげると、あら不思議、きれいに翻訳されてるじゃあーりませんか。

`python ~/python/text_remove_crlf.py | trans {en=ja} -b`

元記事を表示

Python手遊び(CSVファイルから列名を取得)

#この記事、何?
表題の通り。10分で書いたような記事。
CSVファイルの1行目をとってsplit(‘,’)して返す。それだけ。

伏線・・・かも?

#コード
“`py

def get_lines_from_textfile(filepath):
with open(filepath, ‘r’, encoding=’utf-8′) as f:
lines = f.readlines()
return lines

def get_columns_list(csvpath):
line_1st = get_lines_from_textfile(csvpath)[0]
return line_1st.split(‘,’)

def main():
csvpath = ‘solubility.test.csv’
columns = get_columns_list(csvpath)
for column in columns:
print(column)

if __name__ == ‘

元記事を表示

Python 実行時間計測メモ

# いきなりの結論

結局は、`perf_counter()` が無難。
目新しいことはないので読む価値はないかもしれません。

# 想定読者

Pythonで実行速度を計測したがあるけれども、深くは考察していなかった方あたりでしょうか。

# 調べたきっかけ

実行時間を計測するためにうっかり`time.time()`を使っていました。
精度等を気にする必要がないので十分だったのですが、独立しているはずの関数の実行順を変更したら実行時間が大きく変わりました。
それの原因は不明ですが、これをきっかけに時間計測に関して調べ直すことにしました。
(関数自体が実用に耐えないものだった原因究明はあきらめました。ガベージコレクションが影響しているのかも)

# 環境

Windows 10 Pro 64bit
Python 3.8.3

# `time`モジュール

標準ライブラリである`time`モジュールのみ考えます

## 2点間の実行時間を計測するための関数

実行時間を計測するために`time`モジュールで使える関数は以下になります。
`time.get_clock_info()`で

元記事を表示

Python手遊び(RDKit記述子計算:Pandas使ってSDFからCSV)

#この記事、何?
RDKitという化合物を理解して数字をいっぱい返してくれるライブラリを題材に、少し真面目にPythonを書いてみたという話。
まだ、あたしなりの共通関数とかクラス化の形を模索しているところで、先日に続いていろいろ制限事項が残っているけど、少し方向性が見えたかも。

#つまり何するの?
SDFファイルという化合物情報を持つファイルからCSVファイルを作る。
RDKitというライブラリが200列の数字を作ってくれるので、それ以外に名称とか10列合わせて210列出力する。
ただし、汎用化を一部端折っているので、特定のファイル限定・・・って、ダメじゃん。
まあ、あとでバージョンアップするつもり。つもり。

#制限事項
・SDFファイル内の化合物は以下のパラメータを持つこと。
[‘ID’, ‘NAME’, ‘SOL’, ‘SMILES’, ‘SOL_classification’]

・変な化合物はNG。(分離とかイオンとか。ぶっちゃけると、RDKitが計算エラーを出さないこと)

#コード
“`py
import pandas as pd
from rdkit import

元記事を表示

[Python]Seleniumを使用してcanvasで描かれた画像を保存する(ActionChains,PyAutoGUI,base64等)

スクレイピングで画像を取得する際、一般的なimgタグ形式ではなくcanvasで描かれているケースの画像保存で苦戦した。

![qiita用_グラフ1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/658292/5eb79311-0d50-f671-5d94-4f72eb703ff1.png)

このような形で表示されている画像を保存したい。

画像はタイトルの通りcanvasで描かれています。

#右クリックで保存を試す

ページを色々調査していたところ、右クリックで画像を保存出来るという事が分かった。

![qiita用_グラフ2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/658292/f052eb25-956d-69a2-0e2d-2cfda265b02d.png)

なので、「画像を右クリック→保存」の流れをプログラムで実現する為に色々と試した。

“`.py
from selenium import we

元記事を表示

筑波大学の機械学習講座:課題のPythonスクリプト部分を作りながらsklearnを勉強する (17)

前回
[筑波大学の機械学習講座:課題のPythonスクリプト部分を作りながらsklearnを勉強する (16)](https://qiita.com/legacyworld/items/359eeb33722156442f66)
https://github.com/legacyworld/sklearn-basic

# 課題 8.7 主成分分析の例
Youtubeでの解説:第9回(1) 30分あたり
課題 8.3はCluster3をうまく再現できなかったので諦めた。

いつものアヤメデータを主成分分析する問題。
プログラムとしてはscikit-learnは簡単。グラフの部分だけpandasのscatter_matrixを使うのが今までと少し違うだけ。

“`python:Homework_8.7.py
# 課題 8.7 主成分分析の例
# Youtubeでの解説:第9回(1) 30 分あたり
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets i

元記事を表示

PythonAnywhereでFlaskアプリをLaunchする

## はじめに

この記事は、自身で製作しWeb公開にまで至ったボートレース3連単予測サイト「[きょう、ていの良い予想は当たるだろうか](https://www.pythonanywhere.com/user/YouHaveNiceBoat/webapps/#tab_id_youhaveniceboat_pythonanywhere_com)」の内部コード解説となります。今回はFlaskでつくったWebアプリケーションを実際にWeb Launchした流れをまとめます。

Flaskアプリの作成であったり、そのほかの情報は[こちら](https://qiita.com/NGOhiroshi/items/7bcbf01df7c32c93d655)をご覧ください。

## PythonAnywhere、こんな方には向いているかも!
以下のような方は、PythonAnywhereの検討をする価値ありです!

* Flaskで自作アプリをつくって、Localで動かせるようにはなったけども..この後、どうしたらいいんだろう?
* サーバー借りるといっても、いきなりお金かけるのも嫌だし、そもそもサー

元記事を表示

HTML DJANGOのデータベース更新

このような形でvieww.pyからgoodの数をデータベースから引っ張ってきて数を+1させて表示させたいのですが、うまくできません。どこが間違っているのでしょうか、、。?よろしくお願いいたします。

def good(self, pk):
smart = Smart.objects.get(pk=pk)
smart.good = smart.good + 1
smart.save()

元記事を表示

[光-Hikari-のPython]08章-04 モジュール(外部ライブラリのインストール)

#[Python]08章-04 外部ライブラリのインストール
前節では、Pythonをインストールすると自動でついてくる標準ライブラリのインポート方法と使用方法について述べました。
そこでも説明した通り、標準ではインストールされていないライブラリもあり、これを**外部ライブラリ**と言いました。今回はこの外部ライブラリのインストール方法について説明していきたいと思います。

##PyPI(Python Package Index)とpip
外部ライブラリは世界中のエンジニアが開発したライブラリです。それらのライブラリが以下の**PyPI**というリポジトリに登録されています。
[https://pypi.org/](https://pypi.org/)

なお、PyPIは世界中のライブラリの情報が掲載されているため、自分が必要としているライブラリを検索するのは大変です。そこで、ライブラリ(パッケージ)をインストールする際に用いられるのが**pip(パッケージ管理システム)**です。

このpipにより、パッケージをインストールすることができますが、pipにはほかにも以下の機能があります

元記事を表示

OTHERカテゴリの最新記事