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

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

Pythonのバージョンを2→3に上げたけど、ubuntuターミナルを再起動する度に、バージョンが2のままになる

### 現状
pyenv を使って、pythonを2から3にアップデートした。

その後、下記のコマンドでPath設定をした。

“`
$ export PATH=”/home/{{user名}}/.pyenv/bin:$PATH”
$ eval “$(pyenv init -)”
$ eval “$(pyenv virtualenv-init -)”
“`

“`
$ python –version
Python 3.7.6
“`

しかし、今開いているターミナルを消して再起動させたら、

“`
$ python –version
Python 2.7.6
“`

と、pythonのバージョンが2に戻ってしまった。

### 解決策
**/.bashrcを編集して、再起動時にコマンドを自動的に実行するようにする**

“`
$ vi ~/.bashrc
“`
で bashrc ファイルを開いて編集する。

任意の場所に、

“`
export PATH=”/home/{{user名}}/.pyenv/bin:$PATH”
eval “$(pyenv init –

元記事を表示

Ansible 自作モジュール作成 ~その3:Change要否を判定したい人生~

前回の記事1:[Ansible 自作モジュール作成 ~その1:引数受け取りたい人生~](https://qiita.com/Ki2neudon/items/f6e1ee4fc8f29e12893f)
前回の記事2:[Ansible 自作モジュール作成 ~その2:ただコマンドを実行したい人生~](https://qiita.com/Ki2neudon/items/75b8c3dd406e11a386c1)

# 振り返り

– モジュールの雛形作った(その1)
– 複数の引数受け取れた(その1)
– 引数をコマンドと結合して実行した(その2)

# 参考

– [Ansibleのモジュール開発(実践編)](https://dev.classmethod.jp/articles/develop-ansible-module-advanced/)
– 今回もお世話になりますです。

# 初期処理

おさらいもかねて。まずは雛形を作成(参考「前回の記事1」参照)。
テスト的に作成したコマンド実行部分(参考「前回の記事2」参照)は一度取り除いた。

“`python:mkfifo.py

元記事を表示

無名関数とmap関数

無名関数周りすぐ忘れてしまうので自分用にメモ

## 無名関数(ラムダ式)
コードの簡素化に使用

“`python
def calc_multi(a, b):
return a * b

calc_multi(3, 10)

# 出力
# 30
“`
この処理を以下のように書ける
ポイントはlambda a, b:というのが、関数名(a, b)に相当
:で区切って、その関数の処理(ここではreturn a * b)を記述

“`python
(lambda a, b: a * b)(3, 10)

# 出力
# 30
“`

## map関数
ラムダ式はリストなどの要素に対して何か関数を実行したい時によく使用
要素に対して処理をしたいときは**map関数(高階関数)**を使用
関数を引数や戻り値として使う関数で,各要素に対して、何か処理や操作したいときに使います。

“`python
def calc_double(x) :
return x * 2

for num in [1, 2, 3, 4]:
print(calc_double(num))

元記事を表示

Cloud Pak for DataのNotebookでmatplotlibのグラフ日本語文字化けを解消する

matplotlibやseabornでグラフを書いた時に、グラフの日本語が文字化けして以下のように豆腐(□□□)になることがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397277/98f0f714-5e1e-7739-d794-c13f8e8c6735.png)

これは環境に日本語フォントが入っていなかったり、適切に設定されていないことが原因で、matplotlib/seaborn固有の問題です。解決策は[他の記事](https://qiita.com/katuemon/items/5c4db01997ad9dc343e0)でも解説されていますが、これをCloud Pak for Data (以下CP4D)上で解決する方法です。

環境: CP4D v2.5, v3.0LA

CP4Dでは、Notebookで起動するPython環境は予め用意されており、かつランタイムを起動するたびに初期状態で起動するため、一度Python環境に設定すれば未来永劫OKというわけには行きま

元記事を表示

顔面偏差値No.1アイドルをAIに判定してもらおう!!~Face++ API~【検証】

#企画趣旨
**「結局、顔面偏差値が一番高いアイドルは誰なのか?」**

アイドル界隈ではよく耳にする話題です。

アイドルのヲタクに聞いたら、自分の推しているアイドルの名前が返ってくると思います。
たしかにそれは正しいと思います。

でもやっぱり客観的な意見も気になります。

客観的な意見を得るためにアンケートという形もありですが、
せっかく**顔認識**が発展しているのだから**AI**から意見をもらいたいなと思いました。

今回はその備忘録です。

私の顔で試したところスコアは100点満点56点でしたが(←ちょっと不服)、
**果たしてNo.1アイドルとそのスコアは??**

(結果は**目次番号15**にあります)

#全体の流れ
今回の企画は大きく3部構成になっております。

– [前編]画像ファイルのスクレイピング(目次番号1~6まで)
– [中編]Face++のAPIによる判定(目次番号7~11まで)
– [後編]DataFrameのビュー作成と可視化(目次番号12~16まで)

#前編の目次
– 1.前編のゴール
– 2.利用する技術
– 3.ホームページから画像をスク

元記事を表示

【Python】ログ出力をちょっと良くするライブラリ3種類【logzero・loguru・pylogrus】

pythonのログ出力用のライブラリの紹介です。標準のlogging以上に簡単・便利にログ出力を管理できるライブラリlogzero、loguru、pylogrusの3種類のサンプルコードとその使い方を紹介します。

# サンプルコード

各ライブラリのサンプルコードを用意しました。後述の使い方と合わせて参考にしてください。

– logzero
– [基本的なサンプル](https://github.com/k8shiro/PythonLogginLibraries/blob/master/src/logzero_sample/sample1.py)
– [機能全般のサンプル](https://github.com/k8shiro/PythonLogginLibraries/blob/master/src/logzero_sample/sample2.py)
– loguru
– [基本的なサンプル](https://github.com/k8shiro/PythonLogginLibraries/blob/master/src/loguru_sample/s

元記事を表示

デジタル画像処理を読んで

[デジタル画像処理](http://…) という本で勉強中です。
理解を深める目的で(コントラストの変換)を実装してみました。

# *明るさのコントラストの変換*
コントラストとは明るさや色などの移り変わり具合である。 (個人的な解釈)
コントラストが強い → 明るさや色の写り代わりがわかり易い、物の輪郭がわかり易い。
コントラストが弱い → 明るさや色の写り代わりがわかり難い、物の輪郭がわかり難い。

### トーンカーブ
入力と出力の関係を変えることで、画像の色調(トーン)を変えることができる。
よって見え易くなったり、難くなったりする。

“`python:
# 必要なライブラリ
import cv2
import numpy as np
import matplotlib.pyplot as plt
“`

### <今回使う1枚目>
効果を実感しやすいように、以下の写真のような暗めのサンプルを使う。
##### 特徴:かなり暗い

“`python:
# 写真のパス
pic_path = ‘pet-bottle-pic/test/camera_pic/aqua

元記事を表示

PythonのCelery、RabbitMQ(Docker)を動くところまで

メッセージブローカーとしてDockerで起動RabbitMQを使用し、Celeryを使った単純なプログラムが動作するところまでを書く。

内容はほぼ公式ドキュメントの通りだが、DockerのRabbitMQを使うように変えている。

## RabbitMQ

“`shell
# 起動
docker run –rm -d –hostname my-rabbit –name rabbitmq -p 5672:5672 -p 8080:15672 rabbitmq:3-management

# 停止
docker stop rabbitmq
“`

5672が使用するポート。8080(15672)ポートはブラウザから見れる管理画面。(今回はなくてもいい)

## ライブラリのインストール

“`shell
pip install celery
“`

バージョン4.4.2がインストールされた。

## プログラムの用意

“`python:tasks.py
from celery import Celery

app = Celery(‘tasks’, backend

元記事を表示

Django 初心者が簡単なアプリをつくる5

## はじめに
Django 初心者が簡単なアプリをつくる4の続き。目的は複雑なことや面倒なことを極力削ぎ落として、単純化したWebアプリを作り、Djangoの仕組みを学ぶこと。バックエンド中心に何がどう繋がり動くのかだけを理解する。ひと通りCRUD(Create, Read, Update, Delete)を実装し、無事動けばゴール。前回はClass-based-viewからFunction-view(関数ビュー)に書き換えて、2つを比較しながらどうやってDjangoは動いているのかを追いかけた。今回はCRUDのUpdate部分とDelete部分を実装してみたい。で、実は完結です。

### 初心者が簡単なアプリをつくるシリーズ
– [Django 初心者が簡単なアプリをつくる1](https://qiita.com/soh506/items/4035650d2ea19e82d8fd)
– 準備・Djangoの全体像・models.pyの作成
– [Django 初心者が簡単なアプリをつくる2](https://qiita.com/soh506/items/98239c6b1

元記事を表示

Atcoder ABC169 A-EをPythonで

過去最低のパフォーマンスでした:(

#A: Multiplication 1
やるだけ。

“`ABC169a.py
a,b=map(int,input().split())

print(a*b)
“`

#B: Multiplication 2
$N<10^5$なのに普通に回すとTLEになる。が、途中でループから抜けるようにすると通った。~~オーバーフローした際の演算に時間がかかるのかも(そもそもオーバーフローした時点でWAだが)。~~ ```ABC169b.py n=int(input()) a=list(map(int,input().split())) ans=1 if 0 in a: print(0) exit() for i in a: ans*=i if ans>10**18:
print(-1)
exit()

print(ans)
“`

#C: Multiplication 3
解説AC。浮動小数点型を扱うときはFloatではなくDecimalにしましょうね、というだけ。知識問題。

“`ABC16

元記事を表示

Cloud Pak for Dataの分析プロジェクトのJobを環境変数付きでAPI実行する

Cloud Pak for Data (以下CP4D)の分析プロジェクトでは、NotebookやData Refinery FlowをJob化してバッチ実行することができます。今回やりたいことは、以下の2点です。

* Jobに引数を与えて実行時に挙動を変えられるようにしたい
* JobをCP4D外部からAPIで実行したい

厳密に言うとJobは「実行時に引数を渡す」と言うよりは「環境変数をセットして起動」という表現のほうが正確のようです。おそらく内部的にはOpenShiftのPodとして起動するため、環境変数をOpenShiftのConfigMapとして扱っているのだと推測します。

JobをAPIで起動し、その際に環境変数を与えて処理ロジックに渡す、ということを実際にやってみます。

# Notebookを作成
Notebookを作成し、それをJob化します。
今回扱う環境変数として「MYENV1」「MYENV2」「MYENV3」を想定し、値をpandasのデータフレームに加工して、CSVとして分析プロジェクトのデータ資産に出力します。
これらの環境変数はもちろんデフォルトでは定義

元記事を表示

へっぽこが1週間でwebサービスを開発する。どっちらいくって何?-

![どっちらいく.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634341/4b944f0b-8925-65a1-90e9-e29b14642213.png)

[どっちらいく](https://like.youdev.tech/)をリリースしました。 2020.05.24

今後も運営していくかは今の所未定です。。

#開発経緯

だらさんって方が開催しているイベント#web1weekに参加しテーマが「like」だったので素直にlike=好きと捉えて今回のサービスを作成しました。

Pythonでマルチストリームbzip2を逐次展開する

Python でマルチストリームと呼ばれる形式の bzip2 圧縮ファイルを効率的に展開する方法を調べます。

# マルチストリーム

個別に bzip2 で圧縮して連結したデータをマルチストリームと呼びます。

“`text:作成例
$ echo -n hello | bzip2 > a.bz2
$ echo -n world | bzip2 > b.bz2
$ cat a.bz2 b.bz2 > ab.bz2
“`

並列圧縮の [pbzip2](https://launchpad.net/pbzip2/) や Wikipedia のダンプなどで使用されます。

# bz2 モジュール

Python の bz2 モジュールはバージョン 3.3 からマルチストリーム(複数のストリーム)をサポートしました。

* [bz2 — bzip2 圧縮のサポート](https://docs.python.org/ja/3/library/bz2.html)

> バージョン 3.3 で変更: ‘a’ (追記) モードが追加され、複数のストリームの読み込みがサポートされました。

以下

元記事を表示

numpyとscipyでFFT処理してローパスフィルター

FFT処理でnumpyとscipyを使った方法をまとめておきます。
このページでは処理時間を比較しています。

以下のページを参考にさせていただきました。
■Python NumPy SciPy : FFT 処理による波形整形(スムーザ)
https://org-technology.com/posts/smoother.html

まず、処理するサンプルデータを作成します。

“`python
import numpy as np
from scipy import fftpack
import matplotlib.pyplot as plt

# サンプルデータ作成
n = 512 # データ数
dt = 0.01 # サンプリング間隔
f = 1 # 周波数
t = np.linspace(1, n, n)*dt-dt
y = np.sin(2*np.pi*f*t)+0.5*np.random.randn(t.size)

# FF

元記事を表示

GCIデータサイエンティスト育成講座の演習問題を解く Chapter6

#GCIデータサイエンティスト育成講座
「[GCIデータサイエンティスト育成講座](http://weblab.t.u-tokyo.ac.jp/gci_contents/)」は、東京大学(松尾研究室)が開講している”*実践型のデータサイエンティスト育成講座およびDeep Learning講座*”で、演習パートのコンテンツがJupyterNoteBook形式で公開(CC-BY-NC-ND)されています。
Chapter6は「**Pandasを使ったデータ加工処理**」で、データ解析をするための強力かつ高速なデータ操作ライブラリの使い方を学習していきます。
日本語で学べる貴重で素晴らしい教材を公開いただいていることへの「いいね!」ボタンの代わりに、解いてみた解答を載せてみます。間違っているところがあったらご指摘ください。

# 6 Pandasを使ったデータ加工処理

## 6.1 Pandas

### 6.1.1 階層型インデックス

> **<練習問題 1>**
> 次のデータに対して、Kyotoの列だけ抜き出してみましょう。

> “`py3
> hier_data

元記事を表示

Lチカで始めるテスト自動化(3)オシロスコープの組込み

##1. はじめに
Lチカで始めるテスト自動化シリーズ第三弾です。

昨今の省エネ事情を考慮しテスト対象のLEDの点灯方式を[スタティック点灯](https://www.google.co.jp/search?hl=ja&as_q=スタティック点灯)から[ダイナミック点灯](https://www.google.co.jp/search?hl=ja&as_q=ダイナミック点灯)に仕様変更します。そこで、LEDの点灯電圧、点灯周波数をオシロスコープで測定してGo/No-Go判定を自動でできるようテストベンチを改修します。

![IMG_0603s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221758/28bc724a-f4a2-8458-4d43-7298e781374b.jpeg)

これまでの記事はこちらをご覧ください。

1. [Lチカで始めるテスト自動化](https://qiita.com/pbjpkas/items/fd4bd2689deda2d793aa)
2. [Lチカで始めるテスト

元記事を表示

[Python]【補足】04章-08 いろいろなデータ構造(セットの作成と操作)

#[Python]【補足】04章-08 セットの作成と操作
この節ではセットについて取り扱います。セットもデータ構造の分野の1つになります。ただし、この節については補足事項として説明しますので、セットについては割愛しても構いません。

ただし、基本情報技術者試験を受験しようと考えている人は、集合理論や集合演算で出題される内容とっています。午後問題でPythonを選択する人も見ておいたほうが良いでしょう。

なお、**「セット」**は書籍によっては**「集合」**ということもありますので把握しておいてください。

##セットの作成
では早速セットを作成してみましょう。**Python console**に以下のコードを入力してください。

“`.py
>>> S = {1, 2, 3, 4}
>>> S
{1, 2, 3, 4}
“`
セットは**{ }**で囲んで表現します。なお、ディクショナリでは**{ }**内に**「:」**(コロン)で区切ってキーと値を記載していましたが、コロンがなくなるとセットとなります。

##セットの要素の追加

ではセットに要素を追加します。セッ

元記事を表示

Pythonで簡単なブラックジャックを作ってみた

#はじめに

この記事はプログラミング歴1ヶ月半の初心者が書いているコードなので温かい目でご覧ください。

環境
・Windows10(Macでも全然できる)

使用言語
・Python3

使用エディタ
・VScode

#サンプルコード

“`python:blackjack.py

import random

deck = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] * 4

def deal():
hand = []
for i in range(2):
random.shuffle(deck)
card = deck.pop()
if card == 11:
card = “J”
if card == 12:
card = “Q”
if card == 13:
card = “K”
if card == 1:
card

元記事を表示

OpenCVでzero-paddingを1行でする方法

しがない地方院生のsotaです。
初心者なので間違いが多々あると思いますが、その時はコメントで教えていただけると幸いです。

研究やバイトでたびたびパディングを実装するのですが、毎回pillowやらopencvやらでどうするか調べて、一時間近く実装に使っていたのですが、タイトルにもあるようにopencvで1行で実装できることが分かったので、備忘録として残します。

## cv2.copyMakeBorder()

具体的には`cv2.copyMakeBorder()`を使います。
使い方は

“`python
output = cv2.copyMakeBorder(src, top, bottom, left, right, borderType, value)
“`
です。
– `src`は入力画像
– `top, bottom, left, right`はそれぞれ画像の上下左右に何ピクセル空白を加えるか
– `borderType` は追加する境界の種類を指定するためのフラグで、いわゆるpaddingをしたいなら、`cv2.BORDER_CONSTANT`を選択してください。

元記事を表示

OTHERカテゴリの最新記事