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

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

gensimじゃなくてtomotopy使おうよ

## tomotopyって?

[tomotopy](https://bab2min.github.io/tomotopy/v0.8.2/en/)は、TOpic MOdeling TOol の略で、主にLDA(Latent Dirichlet Allocation)とその派生のアルゴリズムを扱えるPythonライブラリです。

同様の機能を持つライブラリgensimと比べて簡単に扱え、C++で組まれているので計算も速いです。

## 導入方法

pipで入れるだけです。

“`shell
pip install tomotopy
“`

## 使い方

例として、gensimチュートリアルにある次のデータセットを使います。

“`txt
Human machine interface for lab abc computer applications
A survey of user opinion of computer system response time
The EPS user interface management system
System and hu

元記事を表示

WSL上で実行したPythonがAbortedになる現象への対処法

# 概要
WSL上でPython(Jupyter notebook)を実行した際にエラーが発生し正常に実行できない現象への対処方法。
起動直後ではなく、起動後かなり時間が経過した後に発生する傾向。

## エラー内容
“`bash
Fatal Python error: _Py_InitializeMainInterpreter: can’t initialize time
OverflowError: timestamp too large to convert to C _PyTime_t

Current thread 0x00007f0232c21080 (most recent call first):
Aborted (core dumped)
“`

# 原因
uptimeがオーバーフローして負の範囲になってしまっている。
[issue](https://github.com/microsoft/WSL/issues/3514)

“`bash
$ uptime
11:23:19 up -24855 days, -3:-14, 0 users, load av

元記事を表示

pythonのsubprocess君、なぜかstdoutしてくれない。

# 問題

例えば、C++でこういう中身のexeファイルを作ったとする。

“` C++
#include

using namespace std;

int main(){
int A,B;
cout << "Aを入力してください" cin >> A;
cout << "Bを入力してください" cin >> B;

cout << A+B; } ``` 至ってシンプルな入力された二つの数字を足し合わせるプログラムである。 これをpythonのsubprocessで実行すると以下のような動きをする。 ```bash ``` ?????? 何も表示されない... なんだこれは... そこで、何も表示されていないが、10と20を入力してみる。 すると, ```bash $ 10 $ 20 $ Aを入力してくださいBを入力してください30 ``` うっわ。 なんか一番最後に表示してほしかったものが表示されてら。 # 解決策 これはC++の方で解決してあげなければならない。 **標準出力の各

元記事を表示

M-SOLUTIONS プロコンオープン 2020 復習

#今回の成績

スクリーンショット 2020-07-26 12.47.11.png

#感想

背水の陣ですね…。Highest更新!と思っていたのですが…。
Dの場合分けがうまくいかず、Fに移って解けそうな感じがしていたのですが、問題を勘違いしていました。
15分前に思いついた解法が合っていてコンテスト後に自力で解くことができたので、コンテスト中に死ぬ気で集中して取り組まなければと思いました。
具体的には、バチャコンを再開する(ABCは結構解いてしまったのでCodeforcesのdiv2,3)or水青黄diffの問題を30分~1時間で制限時間をつけて解くというのが良いかと思いました。

復習記事投稿するのが一週間も遅れてしまいました。以後気を付けたいです…。
最近全く奮わないですがいつか伸びると信じてやるしかな

元記事を表示

AtCoder ABC 174 Python

# 総括
A,BのみACでした。
もう少しでC,Dも解けそうなきがするものの、なかなか解けない・・・。

#問題
https://atcoder.jp/contests/abc174/tasks

# A. Air Conditioner
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668985/356e8e06-11f6-cdd6-6a55-d6b8920e5781.png)
##### 回答

“`python

X = int(input())

if X >= 30:
print(‘Yes’)
else:
print(‘No’)

“`
これは書くだけ。

# B. Distance
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668985/bf86d603-1078-1495-584a-69b15db3988e.png)

##### 回答

“`p

元記事を表示

アルゴリズム 体操20 Remove Duplicates

#Remove Duplicates

ソートされた数値の配列が引数として渡されて、そこからすべての重複を削除します。新たなデータ構造は使用せず
In-place で重複を削除した後、配列の新しい長さを返します。

## 例
Input: [2, 3, 3, 3, 6, 9, 9]
Output: 4 ([2, 3, 6, 9])

Input: [2, 2, 2, 11]
Output: 2 ([2, 11])

##Solution

“`python
# The time complexity: O(N)
# Space Complexity: O(1)

def remove_duplicates(arr):
# index of the next non-duplicate element
next_non_duplicate = 1

i = 1
while(i < len(arr)): if arr[next_non_duplicate - 1] != arr[i]: arr[next_non_duplicate] = arr[i]

元記事を表示

MS Forms/Google Formsにアップロードされた画像ファイルをPDFに一括変換する

# MS Forms/Google Formsに提出された画像ファイルをPDFに一括変換する

### MS Formsにアップロードされた画像ファイル形式
– MS Formsを通してアップロードされるファイルは以下のようになる.
– ファイル名_学生の姓名.拡張子.という形式になっている.人によっては名姓になっていることもあるので注意
– 0FBABF78-CCCB-4958-A17B-61BC43EF27D3_工大 太郎.jpeg
– 0FBABF78-CCCB-4958-A17B-61BC43EF27D3_工大 太郎 1.jpeg
– フォームで提出するフォーマットとして画像を指定していれば,jpg,png,pdfなどが存在する.ファイル名部分は学生に依存するので,仮に同名のファイルが提出されていた場合,名前 1.jpegのように通し番号がつくっぽい
– test_工大 花子.png
– これを以下のように学生番号_通し番号.pdfなファイルに変換したい
– X0111_1.pdf
– X0111_2.pdf
– X0123_1.pdf

#

元記事を表示

アルゴリズム 体操20 Pair with Target Sum

# Pair with Target Sum

並べ替えられた数値の配列と対象の合計を指定して、合計が指定された対象と等しい配列のペアを見つけます。
2つの数値のインデックス(つまり、ペア)を返す関数を作ります。ペアが存在しなければ、インデックス -1を返します。

## 例題

Input: [1, 2, 3, 4, 6], target=6
Output: [1, 3]

Input: [2, 5, 9, 11], target=11
Output: [0, 2]

## Solution
ダブルポインターのアプローチを利用できます。 まず、配列の先頭を指すポインタと最後を指すポインタから始めます。 すべてのステップで、2つのポインターが指す数が合計してターゲットの合計になるかどうかを確認します。 もしそうなら、ペアを見つけたことになります。それ以外の場合は、次の2つのいずれかを行います。

1. 2つのポインターが指す2つの数値の合計がターゲットの合計より大きい場合、これは、合計が小さいペアが必要であることを意味します。 したがって、エンドポインターをデクリメントできます。

元記事を表示

1を並べるだけで見える数の神秘~レピュニット数と不思議な性質~

# はじめに
$1$ をひたすら並べてみましょう.
“`1, 11, 111, 1111, 11111, 111111, 11111111, 111111111, 1111111111, …“`
このように $1$ を $n$ 個並べてできる自然数 $R_n$ は __Repunit 数 (レピュニット数)__ と呼ばれています.[^1]
[^1]: Repunitという名前の由来は「Repeated(繰り返す)」 + 「Unit(1)」からきています
つまり,
$R_1 = 1$,
$R_2 = 11$,
$R_3 = 111$,
$R_4 = 1111$,
$R_5 = 11111$,
………
といった具合です.
とてもシンプルな定義の Repunit 数ですが, 実はいくつかの不思議な性質を持っています.
本記事ではその性質達について紐解いていきましょう.

__高校数学レベルで理解できる内容ですので, 是非肩の力を抜いてお楽しみください!__

# Repunit数の一般項
数列を与えられるとその一般項を求めたくなるのが全人類の悲しき性です.
なので, まずはRepunit

元記事を表示

ラズパイにNumPyをインストールする方法

ラズパイでNumpyをpipでインストールしたのですが、それだと以下のエラーが出てしまいました。

エラー内に記述されているトラブルシューティングのURLを確認します。
https://numpy.org/devdocs/user/troubleshooting-importerror.html

“`
Traceback (most recent call last):
File “/home/pi/.local/lib/python3.5/site-packages/numpy/core/__init__.py”, line 24, in
from . import multiarray
File “/home/pi/.local/lib/python3.5/site-packages/numpy/core/multiarray.py”, line 14, in
from . import overrides
File “/home/pi/.local/lib/python3.5/site-packages

元記事を表示

StyleGAN2で未知のポケモンを生み出す[前編]

# 今回やること
何番煎じだという感じですが,ポケモンの自動生成モデルの学習をしようと思います.調べてみると最新のモデルのStyleGAN2ベースですでに試している方がいます.しかし実際のコードやデータセット,実装までは公開されていなかったのでこのへんを記事にまとめておきたいなと思っています.

# StyleGAN2とは
StyleGAN2はNVIDIAが発表した画像生成モデルです.スタイル変換を用いることが特徴的な生成モデルで,現状では複数のタスクにおいてSOTAとなっている強力なモデルです.

[StyleGAN2の公式実装](https://github.com/NVlabs/stylegan2)
[画像生成タスクの手法の動向](https://paperswithcode.com/task/image-generation)

# データセット
何か良いデータセットはないものかと調べていると,事前にデータを15000件収集して公開してくれている方がいたのでこちらを使わせていただきました.
[MonsterGAN](https://medium.com/@yvanscher/u

元記事を表示

DeepRunning ~Level5~

#Level5.深層学習 DAY1

 ![alt](http://ai999.careers/bnr_jdla.png)
 [3ヵ月で現場で潰しが効くディープラーニング講座とは](http://study-ai.com/jdla/)

##5-1.ニューラルネットワークの全体像
  ●クライアントの人からすれば、インプットで何を使って、アウトプットで何が出るかしか気にしない。
   エンジニアは特に中間層を意識する必要がある。

☆確認テスト1☆
 5-1-1 ディープラーニングは、結局何をやろうとしているか2行以内で述べよ。
    また、次の中のどの値の最適化が最終目的か。

    ①入力値[X] ②出力値[Y] ③重み[W] ④バイアス[b]
    ⑤総入力[u] ⑥中間層入力[z] ⑦学習率[ρ]

  (確認テストって前に勉強してからその確認なのじゃないだろうかと思いつつ・・・)

  ⇒予測値と正解の値からパラメータを更新し、人間の頭脳のように学習させること。
   最適化する値は、③重み[W]と④バイアス[b]

  【解答】誤差を最小化するパラメータを発見すること

元記事を表示

【Python】初学者にとってわかりにくい言葉をわかりやすく解説してみた

# Youtube
動画は[こちら](https://youtu.be/74BBee6febY)です

# 投影資料
投影資料は[こちら](https://www.slideshare.net/ssuser0d76f8/python-237475233)です

# 所感
– Pythonは、初学者がとっつきやすいプログラミング言語ですが、初学者にとって用語がわかりにくい側面があります
– ただ、用語を理解していないとコードを書けないわけではないので、**コードを書きながら少しずつ用語を概念として理解していくことが大事**です
– 用語を理解できると、Pythonがどういった思想で作られたプログラミング言語なのかを何となく肌感で感じられるようになり、コードを書くのがよりスムーズになります

# 参考にした記事

## 組み込み関数
– [Pythonの組み込み関数とは?一覧と用途解説](https://dot-blog.jp/news/python-built-in-functions/#:~:text=%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF%E9%96

元記事を表示

AtCoder Beginner Contest 174 C問題(Python)

# 最初に考えた方法

素直に7をいっぱい並べた数を作って、ひたすらKで割って0になるかを判定する。
Kが$10^6$以下なのでその範囲まで7を並べる。
7が$10^6$並んだものなんて考えたら当然TLE

“`python
K = int(input())
flg = False
for i in range(10 ** 6):
n = int(‘7’ * (i + 1))
if n % K == 0:
flg = True
break

if flg:
print(len(str(n)))
else:
print(-1)
“`

# 競プロの神(@tanakh)の解法と公式解説読んで作成
筆算的なものを実装すればよいらしい。
普通の筆算は割り切れるまで(気が済むまで)あまりに0を足して計算を続けるが、代わりに7を足すというもの。
例えば、 $ 10 \div 8 $は普通以下のようになる

“`math

10 \div 8 = 1 \, あまり \, 2 \\
20 \div 8 = 2 \, あまり

元記事を表示

PythonのSliceにモヤっとした話

#モヤッとした
Python初心者がざっくり以下のようなコードを書いてるときに想定したのと違った結果が返ってきてモヤっとした話です。
#コード
~~~python
p=0
q=1
l=[‘a’,’b’,’c’,’d’,’e’,’f’,’g’]
print(l[p:q])

#[‘a’]
~~~
ちなみに初心者の私が想定した出力結果のは以下の通りでした。

~~~python
#[‘a’,’b’]
~~~
#何故結果が異なる?
以下の記事で解決いたしました。
[【Python】スライス操作についてまとめ](https://qiita.com/tanuk1647/items/276d2be36f5abb8ea52e)
仕様ということのようです。
#でも納得行かない
参考のリンクを拝見させて頂いたりした結果、開発の意図としては
[a:b]という記述は between a to b であるという事のようです、日本語で言うならa以上b未満。

しかし初見でこの記述をbetween a to b であるとを理解しろと言うのは中々ハードルが高い気がします。
[恵比寿:六本木]と記載されてる記述を見た

元記事を表示

アルゴリズム 体操19 No-repeat Substring

# No-repeat Substring
文字列を指定して、繰り返し文字がない最長の部分文字列の長さを見つけます。

## 例
Input: String=”aabccbb”
Output: 3(abc)

Input: String=”abbbb”
Output: 2(ab)

Input: String=”abccde”
Output: 3 (abc” または cde)

##説明
この問題はスライディングウィンドウパターンで、動的スライディングウィンドウ戦略を使用できます。 HashMap(dict)を使用して、処理した各文字の最後のインデックスを記憶できます。 繰り返し文字を取得するたびに、スライディングウィンドウを縮小して、スライディングウィンドウに常に異なる文字があることを確認します。

##実装
“`python:
from collections import defaultdict

def non_repeat_substring(str1):
window_start = 0
max_length = 0
substring_frequency

元記事を表示

relation of the Fibonacci number series and the Golden ratio

# relation of the Fibonacci number series and the Golden ratio

Fibonacci number series:

$$
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, …]
$$

Fibonacci number series displayed by a recurrence relation:

$$
\displaystyle
\begin{eqnarray}
a_{n} &=& a_{n-2} + a_{n-1} \nonumber\\\
n&\geq&2 \nonumber\\\
a_0 = 0&,& a_1 = 1 \nonumber\\\
\end{eqnarray}
$$

Galden Ratio:

$$
\displaystyle
\begin{eqnarray}
1 &:& \frac{1+\sqrt{5}}{2} \nonumber\\\
\f

元記事を表示

色々な確率分布の起こる現象を理解した上でpythonで実装

# はじめに

[確率論](https://ja.wikipedia.org/wiki/確率論)や[統計学](https://ja.wikipedia.org/wiki/統計学)を勉強したら色々な[確率分布](https://ja.wikipedia.org/wiki/確率分布)が出られて、どんな分布がどんな状況で使うか迷ってしまうくらいいっぱいあるのですね。

自然に発生する現象における[確率変数](https://ja.wikipedia.org/wiki/確率変数)の値はどの確率分布で説明できるかは現象によって色々違うのです。

この記事では各種の確率分布が発生する現象をpythonでシミュレーションして分布を描いてみます。

実は分布の由来がわからなくても、scipyのscipy.statsモジュールを使ったら色んな確率分布を簡単に実装できますが、まずはどんな事情でどうやってこんな分布ができるかわかることに意味があると思います。

なのでここでpythonのrandomモジュールとnumpyだけで実装します。

一つずつランダムする時はrandomモジュールを、一気にたくさんラ

元記事を表示

ABC174

AtCorder Beginner Contest 174 に参加しました。
ABDの3問ACでした。
Python3を使用しています。

# A問題
ifで条件分岐させます。

“`python
import sys
def input():
return sys.stdin.readline()[:-1]

def main():
s=int(input())
if s >= 30:
print(“Yes”)
else:
print(“No”)

if __name__ == “__main__”:
main()
“`
# B問題
i番目の点と中心からの距離の2乗の値を、リストL[i]に入れます。
これがDの2乗より大きいかifで判定します。

“`python
import sys
def input():
return sys.stdin.readline()[:-1]

def main():
N, D = map(int,input().split())

元記事を表示

PDFファイルにページ番号を追加する方法(Pythonで)

# Table of Contents

1. [はじめに](#orga18657e)
2. [ReportLab PDFライブラリ](#org7441e75)
3. [ReportLab + pdfrwを組み合わせる](#org2258be2)
4. [使用方法](#orgefcf672)
1. [カスタマイズ方法](#orga183ab3)

# はじめに

小学生の娘が算数で間違った問題を、スキャンしてまとめてPDF化しています。しかし、必要なページだけ印刷したつもりが、結構ページ番号がずれていて、何度もやりなおしたりしています。電子化したつもりが意外とアナログです。そこで、自動でPDFファイルにページ番号を付けたいと思いました。ヒューマンエラーによるページ番号のずれが防げる、またはずれてもすぐに気がつくので。

しかし、PDFにページ番号を付けたいという単純なことなのに、意外にも良い実現方法が見つかりません。検索した結果、いくつかWebサービスを見つけて試してみましたが、あるものはページを入れる位置が気に

元記事を表示

OTHERカテゴリの最新記事