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

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

Chainerチュートリアル Step1演習問題の解答

##背景

データサイエンスを始めるにあたり、[Chainer Tutorial](https://tutorials.chainer.org/ja/tutorial.html)をやりました。
初学者にもわかりやすい文章で、数学やpythonの基本から教えてくれるので、機械学習の入門にはおすすめだと思います(しかも無料!)。
準備編の最後に演習問題がついていますが、復習がてら解答をまとめ、投稿しようと思った次第です。

##問2.1(組み込み関数)

“`python

a = [4, 8, 3, 4, 1]

#リストaの長さを求める
res = len(a)
print(res)

#リストaに含まれる値の最大値を求める。
res = max(a)
print(res)

#リストaに含まれる値の最小値を求める。
res = min(a)
print(res)

#リストaに含まれる値の合計値を求める。
res = sum(a)
print(res)

#リストaをソートして、[1, 3, 4, 4, 8] というリストを返す。
res = sorted(a)
print(res

元記事を表示

argparse のヘルプでオプションの書式とその説明が被って読みづらい現象をどうにかする

# はじめに

こんにちは rtanpo440 です。

Python の標準コマンドラインパーサ argparse はいいですね! 自分は Python を最近はじめたばかりでまだ慣れていないところもありますが、コマンドラインパーサはこんなに簡単に書けるんだなぁと思いました。

そして argparse はヘルプを自動で生成してくれます。自分で `add_argument` しなくても `-h` `–help` オプションは自動的に追加され、いい感じに表示できます。

ドキュメント : https://docs.python.org/ja/3/library/argparse.html

# 問題点

しかし 1 個だけこまったことがあります。それは、各オプションの書式と説明が被ってしまい、読みづらい状態になってしまうことです。

“`python:before
#!/usr/bin/python3

import argparse

parser = argparse.ArgumentParser()
parser.add_argument(‘-m’, ‘–foo’,

元記事を表示

そもそもPythonで依存性逆転の原則(DIP)を実現できるのか?

# はじめに

最近設計やアーキテクチャについて悩むことが多いのですが、動的型付き言語であるPythonでも依存性逆転の原則について実現できるのかについて自分なりの意見を書いてみました。私の意見が絶対正しいというわけではないのですが、少しでも参考になれば幸いです。

※Pythonの解説記事ですがC++のコードも出てきますのでご了承ください(内容は難しくありません)

# ポリモーフィズムとは?

まず、依存性逆転の原則を理解する前に**ポリモーフィズム**についての理解が必要です。
説明をWikipediaから引用します。

> ポリモーフィズム(英: Polymorphism)とは、プログラミング言語の型システムの性質を表すもので、プログラミング言語の各要素(定数、変数、式、オブジェクト、関数、メソッドなど)についてそれらが複数の型に属することを許すという性質を指す。ポリモルフィズム、多態性、多相性、多様性とも呼ばれる。

内容が分かりにくいので詳細に解説します。本質は「**それらが複数の型に属することを許すという性質を指す**」の部分です。Pythonなどの動的型付き言語の場合は

元記事を表示

Codility lesson time complexity と 自分の回答メモ (Python)

#Task: Maxcounters
個人の感想です。

##①Speed N*M

def solution(N, A):
anslist = [0] * N
maxvalue = 0
for i in A:
try:
anslist[i-1] += 1
except:
maxvalue = max(anslist)
anslist = [maxvalue] * N
return anslist

#####感想と学び
毎回tryの中でmaxやるとN*2になってしまうと思ったので、
必要な時だけ限定してmaxすることを試みた。が、当然ながらN+1の登場頻度に依存してしまうのでN*Mになるよなと。納得。

##②Speed: N+M

def solution(N, A):
anslist = [0] * N
maxchecker =

元記事を表示

画像認識の環境構築と基礎

PCをしょっちゅう初期化するため、(あと普段別の業務をしていることもあってかなり忘れっぽいこともあり)画像認識用の環境構築を自分用の備忘録として残します。
minicondaを使用してpythonでOpenCVで簡単な画像認識の処理ができる環境構築をします。

概要

+ minicondaで仮想環境を作成
+ jupyter notebookを使用
+ 画像認識の基礎部分(OpenCVについて)

##minicondaで環境構築
####miniconda をダウンロード
Anacondaでもいいですが、低スペPCならminicondaをお勧めします。
デフォルトでインストールされているパッケージが少なく容量を食わないため。
https://docs.conda.io/en/latest/miniconda.html
次へ次へと進めていけばOK。特別な設定は不要です。

####Pytonの仮想環境を作成

“`conda:AnacondaPronpt
(base) >conda create -n py36 python=3.6

元記事を表示

AOJ プログラミング入門 トピック#7, トピック#8

#トピック#7
##[ITP1_7_A](https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/7/ITP1_7_A)
###成績

“`Python:Python
def PointCheck(m, f, r):
if m==-1 and f==-1 and r==-1:
return ‘End’
elif m==-1 or f==-1:
return ‘F’

if m==-1:
m=0
if f==-1:
f=0

if m+f>=80:
return ‘A’
elif m+f>=65:
return ‘B’
elif m+f>=50:
return ‘C’
elif m+f>=30 and r>=50:
return ‘C’
elif m+f>=30:
return ‘D’
else:

元記事を表示

PythonでPDFからOCR

#1.はじめに
素晴らしい先人達の真似をしてPythonでPDFからOCRするコードを書いてみた。
とを使います。
やってることは、PDFをpopplerでjpg化してからTesseract OCRでtxtファイルに文字起こし

初心者なので、コードに変なところあればコメに指摘もらえると嬉しいです。
引用していないサイトも、たくさん参考にさせていただきました。ありがとうございます。

#2.概要

こちらのサイトを参考に、フォルダ構成を以下の通りにしました。
[PythonでPDFを画像ファイル(JPEG、PNG)に変換する方法](https://gammasoft.jp/blog/convert-pdf-to-image-by-python/)

|親フォルダ|子フォルダ|
|:—|:—|
|¥カレント|¥image_file|
||¥pdf_file|
||¥poppler|
||¥txt_file|

※まずはフォルダにある古いファイルを削除

“`python
import os
import pathlib
from pathlib import Path
from

元記事を表示

音楽チャートをスクレイピングした(ほぼ日記)

ただコードをおいておくためだけに。

“`{python}
import pandas as pd
import time
from selenium import webdriver
from datetime import date
from datetime import timedelta

driver = webdriver.Chrome(“****/chromedriver”)
driver.implicitly_wait(30)

url = “http://www.billboard-japan.com/charts/detail?a=sales&”
data = pd.DataFrame(columns = [“year”, “title”, “artist”, “num”])
for i in range(60):
d = date(2020, 10, 5) – timedelta(days = 28*i)
day = d.strftime(“year=%Y&month=%m&day=”) + str(int(d.strftime(“%d”)))
d

元記事を表示

[Python]所要時間で見るDataFrameの強さと弱点

はじめに

Pythonではpandas.DataFrameで二次元の表データを扱うことができます。
他言語の配列相当であるlist,tuple以上に表データを扱いやすいのですが、その処理速度も基本的にはlist,tuple以上に速いのです。
そんなDataFrameの強さと弱点を実際にプログラムを動かしながら見ていきましょう。

実行環境・条件

実行環境
・windows10 Home 64bit
条件
・使用データ:10000行のCSVデータ
・使用データの列:index,学生ID,A-E 5教科の点数(0-10000)
 ※ある試験を受けた学生10000人の成績一覧をモデルとしています

DataFrameの強さ

DataFrameの強さは簡単な処理で、かつ高速でデータを処理できる点です。

平均値を求める場合

後ろに列を追加して、平均値を代入する処理を実装します。
listだと下記の処理を組むことになります。

“`python
for idx, row in enumerate(list):
row.extend

元記事を表示

オープンソースのpipパッケージにloggerを入れて動作解析する

# 概要
– ソースが公開されているpipパッケージの動作を調べるため、logger入りのパッケージを作って、ローカルからインストールします。

# 今回の対象
– django-allauth 0.44.0

# 準備

– 現在インストールされているバージョンを確認
– `pip list | grep django-allauth`

– ソースコードをGitHubからclone
– `mkdir django-allauth-with-log && cd django-allauth-with-log`
– `git clone https://github.com/pennersr/django-allauth.git`
– `cd django-allauth`

# ローカルからpipでインストールする手順の確認

## バージョン番号の変更

– `vi allauth/__init__.py`

“`
#VERSION = (0, 44, 0, “dev”, 0)
VERSION = (0, 44, 0, “dev”, 99)

元記事を表示

【手順メモ】Python3+OpenSSLをUbuntu上でローカルインストールする

管理者権限がなくてもOpenSSLエラーを解決しつつPython3をローカルインストールする手順。

目次

元記事を表示

pythonをインストールする

##前書き
###僕はプログラミングを独学で始めましたがこの記事の最後のところまで習得するのに、とても時間がかかりました。とても難しいので舐めてかからない方がいいです。
###僕はそれを_お手伝い_します。
##はじめに
###この記事はMacOSでのpythonの導入の仕方です
###この記事はあくまで私のおすすめしているやり方であってこの方法が気に入らない場合は他のサイトをご覧ください
###この記事は他のサイトの文章をリスペクト部分があります。

##参考にしたサイト

[Pythonの開発環境を用意しよう!(Mac)](https://prog-8.com/docs/python-env “動作確認環”)
##目次
[動作確認環境](https://qiita.com/drafts/3840d0208306607a494a/edit#%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D%E7%92%B0%E5%A2%83 “動作確認環”)
[Homebrewインストール](https://qiita.com/drafts/3840d0208306607a

元記事を表示

西暦から閏年か判断するプログラム【Python】

この記事では、
西暦から閏年かどうか判断するプログラム
を書いていきます。

##うるう年とは
閏年(じゅんねん、うるうどし、英語: leap year、intercalary year)とは、閏のある年である。これに対し、閏年ではない年を平年(英語: common year)と呼ぶ。
閏年 – Wikipedia

##求め方
閏年かどうか判断するには3つの条件があります。

1. 西暦年が4で割り切れる年は(原則として)閏年
2. ただし、西暦年が100で割り切れる年は(原則として)平年、閏年ではない
3. ただし、西暦年が400で割り切れる年は必ず閏年

この条件のもとに、プログラムを書いていきます。

##コードを書く
**関数内で条件分岐をする**
閏年という意味の“is_leap_year”という関数に、nを引き数として渡します。
nは西暦です。

結果は、Trueが閏年、Falseがそうではない年として、returnで返します。

“`leap_year.py
def is_l

元記事を表示

Pythonプログラミング:BeautifulSoup4を使って米YahooFinanceから企業情報を取得(クローリング)してみた

# はじめに

前回の記事([Pythonプログラミング:SeleniumとBeautifulSoup4を使ってニュース記事を取得(クローリング)してみた](https://qiita.com/Blaster36/items/626940ff2b6b21caf56f))の続きです。

ニュース記事に登場する企業について、その概要(事業内容、役員、株主、etc.)を取得する必要が追加で発生した。

というわけで、Pythonプログラムで「英語」企業情報を取得する処理を実現してみようと思います。
今回、情報Sourceとしては**[Yahoo! Finance](https://finance.yahoo.com/)**を対象とします。

※本稿執筆時点(2020/11/02)の情報に基づき、Code紹介と実行例を示します。

## 本稿で紹介すること

– Yahoo! FinanceからのProfileの取得
– Ex.) https://finance.yahoo.com/quote/AAPL/profile?p=AAPL
– Yahoo! FinanceからのHoldersの取

元記事を表示

【Anaconda3】よく使うコマンド まとめ

#はじめに
よく使うAnaconda3コマンドのまとめです.

# 仮想環境の切り替え
“`
$ conda activate # 有効化
$ conda deactivate # 無効化
“`

# 仮想環境の一覧を表示
“`
$ conda info -e
$ conda info –envs
“`

# 仮想環境の作成
“`
$ conda create -n
$ conda create -n python=
$ conda create -n python= =
“`
\という名前の仮想環境を作成する.
\は省略可.指定されていない場合,最新のバージョンがインストールされる.

# 仮想環境の削除
“`
$ conda remove -n –all
“`

元記事を表示

pythonでymlからcommandをloadして実行する

yml fileからcommandを読み取るプログラムを書いたので掲載しておきます
### yml file
“`
cmd1:
command: ls -l
type: ls

cmd2:
command: ls -a
type: ls
“`

### python code
“`
import subprocess
import yaml

with open(‘sample.yml’) as file:
obj = yaml.safe_load(file)

cmd1 = obj[‘cmd1’][‘command’]
types = obj[‘cmd1’][‘type’]

print(‘実行モードは’, types,’です。’)
print(cmd1)
subprocess.run(cmd1, shell=True)

print(‘\n’)

cmd2 = obj[‘cmd2’][‘command’]
types = obj[‘cmd2’][‘type’]

print(‘実行モードは’, types

元記事を表示

【0】UbuntuにAnacondaで構築するTensorFlow-GPU環境構築

#ゴール
Ubuntu Desktop/Serverをインストールした所から、TensorFlowによるGPU計算ができる環境をAnacondaで構築する。

#対象者
Linuxに不慣れでAnaconda等の仮想環境もよくわからないという深層学習エンジニア

#機材
OS: Ubuntu 18.04LTS Desktop/Server

#この記事のモチベーション
 私自身、Ubuntu Serverにおいて深層学習(Deep Learning)を行いたく、TensorFlowのGPU版を動かすための環境構築を行いましたが、情報を集めることや注意するポイントの多さに圧倒されました。したがって自身の備忘録のため、また、同じ志を持つ人たちに向けてまとまった情報を提供することで、様々なページの往復や順番の違いなどで知識のつなぎ合わせに苦しみを減らせればと考えたため、知識や反省点を環境構築の過程の中で説明したドキュメントを作成しました。

#ドキュメントの構成
環境構築を4つの条件に分けました。
煩雑にならないように一つの条件に対して一つの記事で説明します。
この章を含めてドキュメントは全5

元記事を表示

Pythonで入門 遺伝的アルゴリズム

– 遺伝的アルゴリズムについて、基本的で簡単なところを勉強として書いていきます。
– 理解を深めるために遺伝的アルゴリズムを実際にPythonでコードを書いて、いくつか問題を解く形で動かしていきます。

# 遺伝的アルゴリズムとは

英語ではgenetic algorithm。初出は1975年、ミシガン大学のジョン・H・ホランド教授によって提案されたそうです。

– [遺伝的アルゴリズム – Wikipedia](https://ja.wikipedia.org/wiki/%E9%81%BA%E4%BC%9D%E7%9A%84%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0)
– [ジョン・H・ホランド – Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BBH%E3%83%BB%E3%83%9B%E3%83%A9%E3%83%B3%E3%83%89)

ある程度、各個体で個別となる属性を持たせた「遺伝子」「染色体」扱いの要素

元記事を表示

Vega-Liteを使ってcsvファイルを可視化したい!

#きっかけ#
 研究室でVega-Liteを使うことになったのですが、チュートリアル終了後なにから手をつければいいのかわからず、かなり手こずったので備忘録+誰かの助けになれば幸いです。

#目的#
###手持ちのcsvファイルをVega-Liteを使って可視化したい###
 [チュートリアル](https://vega.github.io/vega-lite/tutorials/getting_started.html)は公式で提供されている[オンラインのエディタ](https://vega.github.io/editor/#/edited)を使うことで問題なく進められるのですが、自分で持っているファイルをアップロードする方法が無いのか、自分が見つけられなかっただけなのかわかりませんが、できなかったためローカルでVega-Liteを使う方法を探しました

#手順#
色々調べた結果

+ pyhtonでVega-Liteを使える
+ JupyterLabを使うと色々便利そう

というわけでJupyterLabでVega-Liteを使おうとしたのですが、結論から言うと何故か自分の環境だと

元記事を表示

Pythonの配列でつまづいた話

最近Pythonを触る中で、個人的に「Python、そうだったのか」となった配列の話。
(ちなみに自分はこれでつまづいて1, 2時間溶かした過去がある)

## 配列追加のappend / +=
配列に文字列を追加しようとする時の書き方として、以下はそれぞれ違う。

“`python
arr = []
arr += “hello” # => [‘h’, ‘e’, ‘l’, ‘l’, ‘o’]
arr.append(“hello”) # => [‘hello’]
“`
`+=`は配列の連結でありオペランドとしてiterableなオブジェクトを受け取るので、文字列は文字の配列として扱われて一文字ずつ配列に格納される。
例えばint型を渡すと、もちろんこれはiterableではないのでエラーとなる。

## Rubyは?
細かく調べてないが、irbで確認するとRubyも同じような感じっぽい。

“`Ruby
arr = []
arr += ‘hello’ # => TypeError: no implicit conversion of String into

元記事を表示

OTHERカテゴリの最新記事