Python3関連のことを調べてみた2020年01月14日

Python3関連のことを調べてみた2020年01月14日

離散フーリエのプログラムを自作した

離散フーリエ変換(DFT)のプログラムを自分で作ってみました。
フーリエ変換は大学3年生の時に授業でやった気がしますが、ほとんど記憶にありません(sinやcosや積分が出たような気がする程度)。
化学系出身ということもあり、DFTといえば密度汎関数理論の方を思い浮かぶタイプの人ですが、google教授にいろいろ教わりながらやりました。
結論としては、想像の100倍簡単でした。

#離散フーリエ変換の式
wikipedia先生曰く
$$ F(t)=\sum_{x=0}^Nf(x)e^{-i \frac{2\pi tx}{N}} $$
ここで、Nは任意の自然数(データ数?)、eはネイピア数、iは虚数単位、πは円周率、tは周波数です。

これをプログラムに落とし込んでいきます。
まずは適当に三角関数を足し合わせたものを作ります。
周波数が9で振幅1の正弦波と、周波数18で振幅2の正弦波を重ねました。
$$ y(x) = \sin(9×2\pi x)+2\sin(18×2\pi x)$$

グラフ描画はmatplotlibでは面倒なのでpandasのplotを使いました。

“`python

元記事を表示

[Python3 入門 8日目] 4章 Pyの皮:コード構造(4.1〜4.13)

#4.1 #によるコメント
– プログラムの中に含まれるテキストで”#”によるコメントはPythonインタープリンタから無視される。
– Pythonには複数行コメントはないため、コメント行、コメントセクションの冒頭には必ず#を入れなければならない。

#4.2  \による行の継続
– 行末に\を置くとPythonはまだ行替えをしていないと思って動く。

“`py

#小さい文字列から長い文字列を作りたければ次のように少しずつ作っていく方法がある。
>>> alphabet = “”
>>> alphabet +=”abcdefg”
>>> alphabet +=”hijklmnop”
>>> alphabet +=”qrstuv”
>>> alphabet +=”wxyz”

#継続文字を使えば見づらくせずワンステップで作ることもできる。
>>> alphabet = “abcdefg” + \
… “hijklmnop” +\
… “qrstuv”+\
… “wxyz”

#行が複数行にまたがる場合にも行継続が必要になる。
>>> 1+2+
Fil

元記事を表示

Matplotlibの折れ線でグラデーション

#やりたいこと
![無題のプレゼンテーション.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257157/85236293-9288-48b7-e736-63501283e17d.jpeg)

たくさんデータがあるとき、matplotlibで普通にプロットすると大変見づらいです。
配布資料にするにも、自分でデータから傾向を読み取るにも不便です。
なのでグラデーションにしたくなります。

#やったこと

numpy.linspace みたいにグラデーションを作れる関数を作りました。

使い方
1. gradation 関数をコピペ
2. カラーコード(sRGB)をググって、start, endに入れます。
3. return がsRGBの文字列のリストになっています。

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

def gradation(start=”#CCCCCC”, end=”#0

元記事を表示

ジェネレーター

“`py:forループで
l = [‘おはよう’, ‘こんにちは’, ‘こんばんは’]

for i in l:
print(i)
“`

“`:forループでの実行結果
おはよう
こんにちは
こんばんは
“`
これをジェネレーターを使って書くと、

“`py:ジェネレーター1
def greeting():
yield ‘おはよう’
yield ‘こんにちは’
yield ‘こんばんは’

g = greeting()

print(next(g))
print(next(g))
print(next(g))
“`

“`:ジェネレーター1の実行結果
おはよう
こんにちは
こんばんは
“`
ジェネレーターを2つにすると、

“`py:ジェネレーター2つ
def greeting():
yield ‘おはよう’
yield ‘こんにちは’
yield ‘こんばんは’
g = greeting()

def counter(num=10):
for i in range(num):
yiel

元記事を表示

Python3でXMLをスマートにparseしたい

# 要約
`xml.etree.ElementTree`モジュール内の`getchildren`メソッドを使ってスマート(当社比)に目的の値を取得した
個人的なオススメは[こちら](#内包表記を用いたparse)

# 背景
– Pythonを用いたXMLのparse方法をいつも忘れる→備忘録として残したい
– `Python XML`でググる内容が自分のニーズを満たさない→ObjectDetectionの一環としてXMLを抽出したい
– 自分のコーディングスキルに自信がない→誰か指摘してくれることを期待したい

# 環境
– Python3.6.5

# 対象と目的
## 対象
以下のようなXMLを対象とします。(自前の画像を[labelImg](https://github.com/tzutalin/labelImg)を用いてアノテーションしたものをXML形式に保存した)

“`sample.xml

pasta
DSC_0047.JPG /Users/yusei

元記事を表示

【第2回】pythonでCPUとメモリの使用率を取得する

# CPUとメモリの使用率を取得する第2回です。

## 前回からの違いは、ボタンを押した分だけログが取れること

## 動くこと優先してます。
– ソース的にキレイにできそうなところもあるけどとりあえず動くことを優先してます。

## ファイルの存在確認入れてるんだけど?
– なんかうまく動いてないっぽい。
– logファイルを先に作っておくとうまくいく。

## 動作確認
– windows10 1909
– mac catalina

“`python3
#!/usr/bin/env python
import psutil as psu
import tkinter as tk
import sys
import os
import datetime

# tkinterでwindowの作成とタイトルを作る
# windowサイズの指定
root = tk.Tk()
root.title(u”CPU&メモリ使用率”)
root.geometry(“600×300”)

# cpu用ラベル
Static1 = tk.Label(text=u’CPU:’)
Static1.pac

元記事を表示

【入門】open3dの使い方

#1.はじめに
##1-1.記事を書くきっかけ
仕事でopen3dを使うことになったが、初期導入から基本的な機能の把握に
時間がかかったので、把握内容をまとめたい。

##1-2.対象読者
・Open3Dを仕事で使うことになったが、何から手をつければいいかわからない人
・RGBだけではなくDepthも取り扱いたいが、まず何をしたらいいかわからない人
・上記に加えて、英語が苦手な人

#2.関連サイト
読んだサイトは以下の通り。
https://blog.negativemind.com/2018/10/17/open3d/

https://qiita.com/n_chiba_/items/fc9605cde5c19a8c7dad

#3.Tutorial
##3-1.一番大事なこと。
他のライブラリ、フレームワークと同様に、公式サイトのチュートリアルが一番詳しく、正しく、最新の情報が載っている。
まずは公式サイトを読もう。

##3-2.公式ドキュメント
URL: http:/

元記事を表示

【Python3】【AtCoder】階乗・順列・組み合わせ計算

#階乗
“`hoge.py
def factorial(x, mod=10**9+7):
# x!
# 階乗
# ex) factorial(5) = 120
tmp = 1
for i in range(1, x+1):
tmp = (tmp * i) % mod
return tmp
“`

#順列
“`hoge.py
def permutation(n, x, mod=10**9+7):
# nPx
# 順列
# ex) permutaion(5, 2) = 20
tmp = 1
for i in range(n, n-x, -1):
tmp = (tmp * i) % mod
return tmp
“`

#組み合わせ

“`hoge.py
def combination(n, x, mod=10**9+7):
# nCx
# 組み合わせ
# ex) combination(5, 2) = 10

元記事を表示

超シンプルな検索エンジンを作ってみたゾ!

#はじめに

以下の記事を眺めていたら、自然言語処理を使って、大量データの中から、自分が求めているデータを抽出できるのって素敵だなーって感じていました。

* https://qiita.com/naotaka1128/items/87d717961bd0c34e7a64

なので、超シンプルな検索エンジンを作りました。

# 作った検索エンジンの仕組み

①蓄積した文章群から言語モデル(今回はtfidf)、ベクトルを作成。
②入力文章を言語モデルからベクトル化
③入力文章ベクトルと、蓄積した文章群の一つ一つとcos類似度を計算
④cos類似度が高い順にソートして、出力

#ソースコードはこんな感じ
twitterから取得したデータを用いて、言語モデル、ベクトル作成。
※データ取得については、この記事の本質ではないので、今回は割愛します。

“`python
#データサイエンティスト、自然言語処理、機械学習を含むtwitterデータを使います。
#search_tweet_listが、取得したデータを保持しているリスト変数です。

#tfidfのために、twitterデータを分かち書

元記事を表示

[ついにメジャーアップデート]Pandas1.0.0rcのアップデート内容を色々調べてみた

ついにPandasの1.0.0rc版が公開されたようなので、早速アップデート内容の確認や挙動を試していきたいと思います。

元のツイート :