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

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

pythonの __all__ について

pythonを以前勉強してた時期に、`__all__`について触れていましたが、なんだか最近なんだろうって迷い始めたので、ねんのためメモしておきます。

`__all__`というのは`__init__.py`ファイルに書く内容です。それで、allの中に書く文字列は全部このpythonモジュールがimportされる際にimportされます。

それで`from package import *`だと、このpackageの中にある先ほどの文字列の関数がimportされるわけです。それ以外はimportされません。

ということでした。以上

ちなみにですが、`from package import *`は非常に嫌われる書き方なので、できるだけ使わないように気をつけて

以下は参考にさせていただいた海外コミュニティにて質問された際の答えです。一応概要は上記で書いていますので、気になる方は御覧ください。

>`__all__` is a variable that can be set in the `__init__.py` file of a package.

>The `__all_

元記事を表示

python dictとsortedメソッドについて

pythonの勉強をしていると、sortedメソッドとはは避けて通れないものです。しかもよく忘れるので、メモっておきますね。ここは辞書に対してsortedメソッドを使っています。
気をつけるべきポイントはlambda関数の後ろのyやxは別に何でもいいということです。例えば、lambda aaa:aaa[0]としても構わないのです。なぜなら、ここのyやxはただ前のlistの中のイテレーター(例ではlistA, listB, listCのことです)中身なのですから。ここさえ抑えておけば大丈夫そうですよね。
以下の例を見てみてください。

“`python
listA = [3, 6, 1, 0, 10, 8, 9]
print(sorted(listA))
#结果1
#[0, 1, 3, 6, 8, 9, 10]

listB = [‘g’, ‘e’, ‘t’, ‘b’, ‘a’]
print(sorted(listB))
print(sorted(listB, key=lambda y: y[0]))
#结果2
#[‘a’, ‘b’, ‘e’, ‘g’, ‘t’]
#[‘a’, ‘b’

元記事を表示

[Pytorch] torch.catの動きを理解する

## はじめに
[PyTorchの公式](https://pytorch.org/docs/master/generated/torch.cat.html)(1)にある“`torch.cat“`の例だけでは良く分からなかったので他の例を使って理解するための書き残しです.

## sample code

“`python
import torch
input1 = torch.randn(2, 3, 4)
input2 = torch.randn(2, 3, 4)
input3 = torch.randn(5, 3, 4)
input_list = [input1, input2, input3]

output1 = torch.cat(input_list, dim=0)
print(output1.size()) # torch.Size([9, 3, 4])

output2 = torch.cat(input_list, dim=1) # error
print(output2.size())

output3 = torch.cat(input_list, di

元記事を表示

(備忘録)ディープ以外の機械学習でメモリが足りない時のincremental learningまとめ

# sklearn
公式回答。非線形モデルはMLPぐらいか?

https://scikit-learn.org/stable/modules/computing.html#strategies-to-scale-computationally-bigger-data

# xgb

stack overflowの回答。あまり使わないので正しいかはわからない

https://stackoverflow.com/questions/38079853/how-can-i-implement-incremental-training-for-xgboost

# lightgbm
githubの公式リポジトリのissueから

見た感じ「sklearnで言う`partial_fit`を再現する方法を見つけた」と自己解決しているっぽい

https://github.com/microsoft/LightGBM/issues/2718

Towards Data Scienceより

xgbでのやり方も乗っている

https://towardsdatascience.com/how-to

元記事を表示

印象を表す語と10色の関係を表す行列を作る

“`python
from google.colab import drive
drive.mount(‘/content/drive’)

from PIL import Image
import numpy as np
import os
from scipy.spatial import distance

# filepathで指定した画像ファイルを読み込み、その画像のRGB値の平均をNumpyのArrayで【行ベクトルで】返す関数 ext_mean_rgb(filepath)
def ext_mean_rgb(filepath):
image = np.array(Image.open(filepath).convert(‘RGB’)).reshape(-1,3)
return np.array([np.mean(image[:,0]),np.mean(image[:,1]),np.mean(image[:,2])])

# RGB値をnumpy array、qcolor=np.array([r,g,b])で与えられると[赤,橙,黄,緑,青,紫,ピンク,白,グレー,

元記事を表示

Pythonの超基本文法カンニング用プログラム_フロー制御文ver

仕事でプログラミングをしないが趣味でpythonを始めた私自身のためのチートシート。初学者の方は「思い出す」作業にどうぞお使いください。

超基本文法について理解しているものの、python独特の書き方をすぐ忘れるのでカンニング用プログラム。

確認環境:Python3.7.6

#フロー制御① if文
“`python:01_if.py
#末尾の:忘れがち。
print(‘あなたの名前を入力してください。Alice,usagi,etc…’)
name = input()
if name ==’Alice’:
print(‘やぁ、Alice.’)
elif name == ‘usagi’:
print(‘どうも白うさぎさん’)
else:
print(‘初めまして、’ + name + ‘.’)
“`

“`python:出力例(Aliceと入力すると)
あなたの名前を入力してください。Alice,usagi,etc…
Alice
やぁ、Alice.
“`

#フロー制御② whileループ
“`python:02_while.py
#無限ループにな

元記事を表示

python selenium

#ページ全体のスクリーンショット

“`python:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from time import sleep

# ブラウザーを起動
options = Options()
options.add_argument(‘–headless’)
driver = webdriver.Chrome(‘/Desktop/selenium/chromedriver’, options=options)

driver.get(“https://www.yahoo.co.jp/”)

w = driver.execute_script(‘return document.body.scrollWidth’)
h = driver.execute_script(‘return document.body.scrollHeight’)
driv

元記事を表示

ゼロから始めるLeetCode Day73 「1491. Average Salary Excluding the Minimum and Maximum Salary」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

AWS S3からファイルを取得したFlask APIがファイルをレスポンスとして返戻し、Vueでダウンロードする

# はじめに
忙しいタイトルをしていて、大変申し訳ありません。
現在、以下のアプリ構成でお仕事をしています。
**フロントエンド: Vue.js**
**バックエンド: Flask (python)**

Flaskの方については、これまで全く触ったことがなかったので、新鮮さを噛みしめつつ、日々触っています。
そもそもpythonの方も、ファイルを読み込んでcsvを吐き出してくれるというプチツールを作ったことがあるぐらいですので、多くのことを勉強させてもらっています。

# 本記事で書くこと
タイトルそのままですが、以下を実現します。
1. Flask(Api)が、AWS SDK for Python (Boto3)を使って、AWS S3からファイルを取得する。
2. 取得したファイルデータをレスポンスに詰め、クライアント(Vue.js)に返却する。
3. クライアント(Vue.js)がレスポンスからファイルをダウンロードする。
~~Lambda + API GateWayで良いのでは・・・~~
こんなこともできるんだというぐらいの気持ちで読んでください。

# 本記事で書かない

元記事を表示

Pythonのバージョンを変更する方法

これからPythonを始める人で、デフォルトのバージョンを変えたい!という時に役立つかと思います。
自分もPythonを3系に変更しようとした際に、手間取りました。

ここではpyenvというツールを使用していきます。
2系に再度切り替えも簡単にできますので非常に便利かと思います。

### まずはバージョンを確認

“`
$ python -V
Python 2.7.10
“`
### Homebrewを使ってpyenvのインストールを実行
“`
$ brew update
# Homebrewを最新にする
“`
“`
$ brew install pyenv
# pyenvのインストール
“`
### 必要なPythonのバージョンを選択してインストール

“`
$ pyenv install –list
# インストールできるバージョンの一覧を表示するコマンド
“`
“`
$ pyenv install 3.5.6
# Pythonのインストールを実行
“`
### インストール済みのバージョンが表示される

“`
$ pyenv versions

元記事を表示

SVMを数学的背景から5分で理解しようとする高校生

###ご覧いただきありがとうございます。大変恐縮ながら、ミスがあった場合はズバっとコメントして頂けると幸いです。
*細かい計算方法の理由や計算のカラクリを一部飛ばしてお送りしております。。。。。。
*図は参照させて頂いたサイト及びyoutubeからご覧いただけます。。。。。。
*一部情報欠陥により解釈が難しい場合があるため一番最後の参照させて頂いたサイト、youtubeをご覧になりながらみることをお勧めいたします。。。

###大まかなSVMの流れ
80%①マージンの最適化をするための定式を求める
10%②①の式をさらに簡単に見やすくする。
10%③マージンの最適化の式を活用するにあたって一番扱い易い形に変形。

###SVMって何?
分類を行う。
具体的に行うことはハードマージンやソフトマージンの最大化を行う。
ハードマージンは、わかりやすくグループに固まって分類可能なバリアンス(分散)を扱う。
ソフトマージンは、はっきりとグループごとに固まっていないバリアンス(分散)を扱う。
;ソフトの場合、道の外側にあるかないかで分類分けをしマージンの中にある値

元記事を表示

Python3ではじめるシステムトレード: システムトレードにおける対数の役割

システムトレードという言葉は和製英語で正式にはsystematic tradingといいます。予め定められた規則に従って株式、債券、為替などの流動性の高い(取引の活発な)金融商品を売買する方法だと考えればよいと思います。長い間、金融商品の価格を科学的に分析するといっても、十分なデータが得られずに来ました。そのために、イデオロギーや概念、語り継がれている売買手法が注目を浴びてきました。しかし、システマティック・トレーディングの世界ではデータを重視して、売買の方法を探していきます。したがって、本書がもっとも大事にしているのが

データ
モデル
売買の規則
一貫性
です。

データを客観的に分析するために、価格の動きのメカニズムを説明するモデルを考えます。また、投資目的を達成するために売買の方法を作り上げていきます。設計した売買が実現可能かどうかを判断するためには、金融市場の売買のメカニズムを知っている必要があります。そして、出来上がった取引手法の作り出す成果、またはその効果を客観的に判断するために、統計的手法を用います。

# 利回り、収益率、変化率

投資によりどれだけの収益が得られたか

元記事を表示

Anaconda3環境で,cadnano2.5をインストールする

# 前書き

別記事 (https://qiita.com/ktmene/items/9546bb3379973fd3e88a ) にAnaconda3環境でcadnano2をインストールする方法をまとめました.

この記事では,現在開発途上にあるcadnano2.5をインストールする方法をまとめます.

## 参考

https://github.com/douglaslab/cadnano2.5

https://cadnano.readthedocs.io/en/master/index.html

# 実行環境

– windows10
– Anaconda3 (Python3系)

# cadnano2.5のインストール

python3.6の仮想環境を作る
※3.6でないとだめ

“`
$ conda create -n cadnano2.5 python=3.6
> Proceed ([y]/n)?
$ y
“`

仮想環境に移動

“`
$ conda activate cadnano2.5
“`

インストール
※これで必要なパッケージを全てインストールしてく

元記事を表示

Anaconda3環境で,cadnano2をインストールする

# 前書き

私はAnacondaを使ってpython環境を構築しています.

現在,インストーラでインストールできるcadnanoは,python2.7でしか動かず,パスを通す必要もあって不便でした (https://cadnano.org/windows-installation.html ).

そこで,cadnano (cadnano2) をpython3系で使えるようにする方法をまとめました.

この方法でインストールしたcadnano2は少しバグが多いかもしれません.

## 私の環境でのバグ

見つけたらメモしていきます

– 上書き保存をすると,ファイル名が`C`(拡張子なし)になり,保存先も`cadnano2`フォルダ直下になる.
– deleteで要素を消せなくなるときがある.(cadnano再起動で直る)
– pencilで繋いだときに表示がおかしくなる.(そのcross overを少し動かすと直る,python2版のcadnanoも同じ症状あり)

## 参考

– [cadnano2](https://github.com/douglaslab/cadnano

元記事を表示

ゼロから始めるLeetCode Day72 「1498. Number of Subsequences That Satisfy the Given Sum Condition」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

割り算の切り上げ

pythonコードを読んでいて不思議な記述を見かけたのでメモ。

割り算で切り捨てをしたい場合は、`//`を利用することができます。

切り上げをしたい時には`math.ceil`が利用できます。

というのが基本だと思うのですが、もっとお手軽に切り上げすることができるみたいです。

## -1を2回かける
マイナスの値に対して切り捨て演算をすることで、値は小さい方に寄ります。
そこにもう一度-1をかけることで、切り上げ演算と同じ結果を得ることができます。

“`python

>>> 10//3
3
>>> -10//3
-4
>>> -(-10//3)
4
“`

## 0–10//3
`0–10//3`も、`math.floor(10/3)`と同様の結果を得ることができます。

“`python
>>> 0–10//3
4
“`

pythonには`–`という演算子はありません。
一見不思議に見えるこの式は、優先順位がわかりやすいように括弧をつけると以下のようになります。

[参考: 公式ドキュメント](https://docs.python.org/ja/3/

元記事を表示

店舗に設置された監視カメラの画像を使って来店客の状態を識別してみる

# はじめに

小売店舗の経営者さんから「監視カメラの映像を使って来店客の分析をしたいけど、何か方法ないかな?」と質問があり、詳しく聞いてみるとカメラ画像とレジデータの突合をし、商品を購入されたお客さんの性別や年齢と購入されたものを分析して、仕入れの計画を立てる参考資料にしたいとのこと。

ということで、手始めに監視カメラのことを調べ、監視カメラの画像をパソコンに取り込めるようにし、カメラの画像から商品を購入された来店客を抽出して、時間ごとに表示することで、レジの記録と突合しやすくなるのかなと考え、試してみたら意外と簡単にできたので、以下に手順をまとめます。

なお、監視カメラはレジカウンターの斜め後ろ奥に設置され、レジカウンター越しに店内を映しています。

# やったこと

1. 監視カメラの画像をパソコンに取り込む
2. 監視カメラの画像から人を抽出
3. 抽出した人の状態を識別

# 動作環境

## 機器

– 監視カメラ(CVI方式)
– [AHD/TVI/CVI to HDMI変換器](https://amzn.to/2Zm0kOb)
– [HDMI to USBキャプチャ

元記事を表示

YOLOv3で物体検出 with TensorFlow 2 + Colaboratory

# はじめに

去年からYOLOを使ってシステムを構築していたのですが、TensorFlowのバージョンが2になってから従来の手法([keras-yolo3](https://github.com/qqwweee/keras-yolo3))が利用できなくなってしまいました。

結果として、TensorFlowのバージョンを1.14に下げて運用するようにしていたのですが、どうしてもTensorFlow2系を使わなくてはならず、方法を探していたらうまくできたのでまとめておきます。

# 動作環境

– [Colaboratory](https://colab.research.google.com/)
– Python 3.6.9
– TensorFlow 2.2.0
– [yolov3-tf2](https://github.com/zzh8829/yolov3-tf2)

ここで紹介した内容は以下のURLにて確認することができます。
https://colab.research.google.com/drive/1IICGm0pA93JKqtvaJumHTW1MGO7_uLi8?usp

元記事を表示

python matplotlibを用いた複数の表描出に関する疑問

pythonでのmatplotlibを用いたグラフ表記について調べている中で、以下のエラーが発生しました。pandasのdataframeから、複数の表を同時に作成しようとしたところ、表が重なってしまいうまく描画できませんでした。
環境:Python 3.8.2, matplotlib 3.2.1
“`
fig,axes = plt.subplots(nrows=14,ncols=3)
for column in df.columns:
  i=0
  try:
     axes[i].plot(df[column],df[‘Y’],alpha=0.3)
     i = i+1
  except:
     pass
“`
「表が重なっている」という理由から、nrows=3,nrows=1に変更したところ、表がうまく描出できました。複数の表(例えば、14行*3列)を一度に描出する方法はあるのでしょうか。

駆け出しで拙い質問で申し訳ございません。
原因または解決法をご存知の方はコメントいただけますと幸いです。

元記事を表示

ゼロから始めるLeetCode Day71 「1496. Path Crossing」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

OTHERカテゴリの最新記事