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

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

関数を並列処理で実行する

一つの関数に引数をとって、引数の値によって並列処理させる方法は良い記事がたくさんでてきます。

[Pythonの並列処理・並行処理をしっかり調べてみた](https://qiita.com/simonritchie/items/1ce3914eb5444d2157ac)

ただ、開発する中で既に定義されている、引数を取らない複数の関数を並列処理する方法があまりでてこなかったので(ユースケースが少ないのかもひしれませんが)、まとめてみます

コードは[Github](https://github.com/mynkit/FunctionParallelProcessing)にもあがっています

今回並列処理にjoblibを用いているので、install済でない方はinstallしておきましょう

“`sh
pip install joblib
“`

まずは複数の関数をただ順番に実行していく関数の定義です。

“`Python
def run_func(*funcs):
[f() for f in funcs]
“`

次に、この関数を並列処理させます。

“`Pyth

元記事を表示

pythonで生徒を当てるアプリをつくる

#はじめに
私の通っている高校で,数学科の先生がExcelを使って”生徒を当てるヤツ”を作って生徒を当てるといに使っていたので,その改良版をpythonを作って作ってみた.

#Excel版の仕組み
1.生徒をランダムに選択して画面上に表示する
2.もしその生徒が過去にあたっていた場合は名前の隣のセルが赤くなる
3.あたった生徒を記録する(一巡した場合クリア)

(先生に許可は取っていないので詳細は控える)

#改良点
1.生徒は毎回全員の中から選ばれ,一度あたったかどうかを人が判断しなければいけない.
 →一度あたった生徒は一巡するまで表示されないようにする
2.あたった生徒を教師がコピペで手動で記録している.
 →記録を自動化する

#実装する機能
1.名前の表示
2.欠席者を飛ばす
3.リストのリセット
4.リストの表示
5.履歴の表示
6.履歴の消去
7.名簿の更新
8.コンソールのクリア

#プログラム

“`python:生徒当てるヤツ.py
import random
import pickle
import os
import sys
import datetime

元記事を表示

Django(Python)でシステム開発できるようになる記事_入門編

## はじめに

Pythonをはじめ、プログラミングが以前より身近になってきましたが
いざサービス開発にチャレンジすると色んな壁があります。

**『入門書やチュートリアルのコピペから卒業できない』**
**『コピペで作ってみたけど、それ以降のアレンジができない』**
**『自分が書いたコードが正しいのか何となく自信がない』**

これらを分析すると**段階別に5つ要因**に切り分ける事が出来ます。
ーーーーーーーーー
**■実践フェーズ**
(1) **システム開発の全体像**が見えていない
(2) **システムを構成する個々のパーツの役割**が見えていない

**■基礎フェーズ**
(3) **プログラミングの基礎**が身に付いていない
(4) **アイディアからシステム設計を考える**スキルが身に付いてない

**■アイディアフェーズ**
(5) **何を作るか?(アイディア)**が出てこない
ーーーーーーーーー

本記事では**『プログラミングの基礎を習得した状態』**を前提に、
**「実践フェーズ」**を重点的に扱って行きます。

もし自信が無かったり、記事を読んで難し

元記事を表示

Pythonでゼロからでもサービス開発・公開できる学習ロードマップ

## 初めに
この記事は**『プログラミング未経験からPythonでサービス開発できる』**ことを目標に、
習得すべきスキルを学習ロードマップとして整理しました。

**毎日2~3時間(土日は+2時間)**続ければ最短3ヵ月で完了できる内容に絞りました。
すでに習得済みのスキルは飛ばしつつ進めて大丈夫です。

**Ruby**など他の言語でも大筋は同じ流れなので、
Pythonと書いてある部分を、そのままRubyと読み替えれば大丈夫です。

※なお、Twitter でもプログラミングに関する情報を発信しています。
もし良ければ [Twitterアカウント「Saku731」](https://twitter.com/Koji21825331) もフォロー頂けると嬉しいです。

## 学習ロードマップの全体像
まず、サービス開発に必要なスキルは大きく分けて10種類あります。

各章で、それぞれのスキルが何の役に立つのか説明しつつ、
十分なスキルが習得できる参考記事・書籍を紹介して行きます。

![image.png](https://qiita-image-store.s3.ap-n

元記事を表示

Dockerで起動したJupyter Notebookでvimキーバインドを使う

# 概要
最近はデータサイエンスの勉強で統計学の本を読んでいるのですが、本を読んでいるだけだとなかなかイメージしにくいこともあるので、Jupyter Notebookを使って手元でコードを書きながらやりたいなと思いました。
Jupyter Notebookでコード書くならvimのキーバインドが使えないとテンションが上がらないのでvimが使えるようにしたいと思いましたが、多少ハマった部分などあったのでやり方をまとめました。

# 環境
||バージョン|
|:–|:–|
|Mac|10.15.3|
|Docker|19.03.4|
|docker-compose|1.24.1|

# 環境構築手順
Dockerfileとdocker-composeを使ってvimのキーバインドが使えるJupyter Notebookを起動します。
※以下ファイルはGitHubにもまとめているのでご参考ください。
https://github.com/hikarut/Data-Science

##### 1. notebook保存用のディレクトリ作成
“`
$ mkdir notebooks
“`

元記事を表示

コンフィグファイルをyamlじゃなくてpythonファイルで食わせる、という案

![n3215e416cf319a3a.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491308/fe54ef1a-698e-a28f-c36f-51f4fdda2b7f.jpeg)

# ymlファイルでのコンフィグの入力

機械学習モデルの学習・推論時のコンフィグ情報の入力にはyamlファイルを使うのではないかと思います。

ただし個人的には、yamlでは変数が使えないのが歯がゆい点ですね。一応アンカーとエイリアスという変数っぽいものはあるのですが、それは行ごとの値の保持なので、例えば親ディレクトリが共通な時とかに部分的な共通点を保持できないです。

例えば、

“`yaml
image: “/path/to/dataset_name/data_version/Images”
label: “/path/to/dataset_name/data_version/Csv”
“`

“`yaml
shared_dir = “/path/to/dataset_name/data_versi

元記事を表示

hstackやvstackでできないことをdstackで

“`
a = np.array([‘1’, ‘2’])
b = np.array([‘a’, ‘b’])
“`
aとbを合わせて次のようにしたい

“`
array([[‘1’, ‘a’],
[‘2’, ‘b’]])
“`
hstackやvstackでできなかったので下記のようにやった。

“`
>>>np.dstack((a, b))
array([[[‘1’, ‘a’],
[‘2’, ‘b’]]])
>>>np.dstack((a, b)).shape
(1, 2, 2)
>>>c.reshape(c.shape[1], c.shape[2])
array([[‘1’, ‘a’],
[‘2’, ‘b’]], dtype=’

元記事を表示

Pythonで”import A, B as C”とするとどうなるか?

# はじめに
Pythonでモジュールをインポートする際は、

“`python
import os
“`

とか、

“`python
from sys import path
“`

のようにしますが、asを使えば、自分で使いたい名前で参照できます。たとえば

“`python
import numpy as np
“`

とすると、numpyという名前の代わりに、npという名前を使ってモジュールを

“`python
arr = np.asarray([1,2,3])
arr = numpy.asarray([1,2,3]) # 上と同じ
“`
のように参照することができます。

# 今回ハマったところ
今回ハマったのは、

“`python
import A, B as C
“`
としたときに、**モジュールA, Bはどういう名前で参照されるか** ということです。以下のどれでしょう?

– import A as C と同じ
– import B as C と同じ
– importErrorになる

**PEP8によれば、モジュールをカンマで区切って一括i

元記事を表示

【Python】Gmailを送信するAPI作成

通知機能が欲しくて、gmailを飛ばす機能を作ったので記載します。
言語はpythonになります。

前提

gmailの初期設定では、pythonによるログインをセキュリティでブロックしています。
解除方法は、Gmailアカウントにある「安全性の低いアプリのアクセス」の設定を許可にすればOKです。
https://myaccount.google.com/security


送信メールの設定を行うクラスになります。
送信元、送信先、gmailのアカウントパスワードを初期化で設定し、
sendメソッドの引数の内容を設定します。

“`python:send_message.py
Learn more or give us feedback
from email.mime.text import MIMEText
from email.utils import formatdate
import smtplib

class Send_Message:
fromaddress = ‘sample@gmail.com’
toadd

元記事を表示

Pythonで複数の数値標高データを一枚絵にする

前書いた記事の続き?のようなもの

『Pythonで国土地理院の標高データを画像化してみる』

この記事では、複数のxmlファイルをポポンと放り込んで、適切に並べて一枚絵にしたいと思います

準備

今回は、任意の都府県のメッシュデータを、まるごと落とします。
国土地理院のダウンロードページから、任意のメッシュを選択し取得します。
https://fgd.gsi.go.jp/download/menu.php

『基盤地図情報 数値標高モデル』の「ファイル選択へ」というボタンを押すと、ダウンロード画面へ飛びます。
今回は、大阪府のデータを使用することにします。
左側にある10mメッシュの10(地形図の等高線)にチェックを入れておいてください

Pythonで国土地理院の標高データを画像化してみる

前職の勤務中、上長の趣味()で作らされたPythonで国土地理院の数値標高モデルをPNG化するプログラム。
眠らせるのは勿体無いので、次の学習者に託します

言わずもがなですが、下記のコードは『最善のコード』ではありません!
また、私はPythonが専門でもないので、「誰かリファクタリングしてくれたら嬉しいなぁ」なんて思いつつ書いています

※補足(2020/02/14) このコードは、私がまだ一年目のころに書いたコードなので、出来が悪いです。お気を付けください。

やりたいこと

国土地理院の数値標高データを取得し、Pythonを使ってグレースケール画像にしたい
データファイル一つにつき一枚のPNGファイルを生成することにする

落とせるxmlファイルの説明は下記のQiita記事が凄くわかりやすいので参考にしてください
https://qiita.com/tobira-code/items/43a23362f356198adce2

元記事を表示

Python環境構築(pyenv+poetry+pipx)

# What’s this?
macbookの`Python`環境を

– pyenv
– poetry
– pipx

で構築したので, そのメモです.
環境は**mac OS 10.14.6 Mojave**です.
homebrewはすでに入っている前提で進めます.
(homebrewを入れてない人は[Homebrew公式](https://brew.sh/index_ja)を参考にして入れてね)
適宜更新していくと思います.

# Python3のインストール
homebrewでsystemのpython3をインストールします.
すでに入れてる人は飛ばしてください.
また, 「どうせ後でpyenv入れるんやろ. pyenvで入れるからええわ.」って人も飛ばしてください.
systemにpython3をインストールするのは僕の趣味です.(あと, なんかよくわかんないけど, pyenv上のpythonでnumpy,scipyをmklとリンクさせようとすると失敗するから…)

“`
$ brew install python
“`

# pyenvのインストール
[公式](ht

元記事を表示

Flaskアプリケーションをpythonコマンドで実行する際にOSError: [Errno 8] Exec format errorというエラーが出る

## 解決策1
ファイルの1行目に`#! /usr/bin/env python`を追加する

## 解決策2
ファイルパーミッションを644に変更する。

## 解決策3
`flask run`でアプリケーションを実行する

## 参考リンク
https://github.com/pallets/flask/issues/3189
https://github.com/pallets/werkzeug/issues/1482

元記事を表示

制限標準出力問題

https://qiita.com/sh1ma/items/86f03c08b324e7a88495

– 文字列・数値リテラル不可
– chr/ord関数不可

似たようなネタの問題を[CodeIQで出題した](https://github.com/cielavenir/codeiq_problems/tree/master/q431)ことがありましたが、あっちはchr関数の利用が前提だったので、もう一捻りがなかなか大変でした(chrが使えないとgetattrすらままならない)。
かろうじてbytearray.decodeで事なきを得ました。

※Py2/3両方可です

“`py:Sh1ma.py
#!/usr/bin/env python
szero = len(str(len([])))
sone = szero + szero
stwo = sone + sone
sthree = stwo + stwo
sfour = sthree + sthree
sfive = sfour + sfour
ssix = sfive + sfive
print(bytearray([

元記事を表示

ジェネレータ

通常の関数と異なり、前回返した値を覚えているようです。
呼び出すと次の値を返します。

“`python:generator.py
def counter(num=10):
for _ in range(num):
yield ‘run’

def greeting():
yield ‘good morning’
yield ‘good afternoon’
yield ‘good night’

for g in greeting():
print(g)

g=greeting()
print(next(g)) #good morning
print(next(g)) #good afternoon

c=counter()
print(next(c))
print(next(c))
print(next(c))
print(next(c))
print(next(c))
print(next(c))
print(next(c))
print(next(c))
print(next(c))
print(

元記事を表示

【はじめてのCOTOHA API】昔ばなしを要約してみた

[【Qiita x COTOHA APIプレゼント企画】COTOHA APIで、テキスト解析をしてみよう!](https://zine.qiita.com/event/collaboration-cotoha-api/) という企画を見つけたので、COTOHA APIの使い方と、実際にCOTOHA APIを使って昔ばなしを要約してみた結果をまとめました。

# COTOHA APIとは
![スクリーンショット 2020-02-13 21.40.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154305/fdf574d8-8f21-13f8-e804-19e003cb1073.png)

詳しくは[COTOHA APIについて](https://api.ce-cotoha.com/contents/about.html)を見てください。

# COTOHA APIの使い方

## APIを使うために必要な情報を取得しよう

COTOHA APIを使うには、APIを使うために必要な情報を取得するため

元記事を表示

Numpy入門

# 1. Numpy 基礎
## 1.1. numpy.ndarray 基礎
### 1.1.1. numpy.ndarray 属性要素

| numpy.ndarray 属性要素| 取得内容 | Example 1
np.array([[1,0,0],[0,1,2]]) |
|:-:|:–|:-:|
| ndim | 次元数 | 2 |
| shape | 配列の形 | (2,3) |
| size | 配列要素の数 | 6 |
| dtype | 配列要素のデータ型 | int32 |
| T | 転置配列| np.array([[1 0]
[0 1]
[0 2]])
| flags | メモリーレイアウト ||
| flat | 一次元化(平坦化)した配列生成
配列定義例:np.array(配列変数.flat) ||
| imag | 配列要素の虚部値配列 ||
| real | 配列要素の実部値配列 ||
| itemsize | 配列要素の大きさ(バイト)
例:int32 -> 32/8 = 4バイト | 4 |
| nbyt

元記事を表示

PySimpleGUIでVBAの代わりになるUIをつくってみる(ダイアログ、リスト、ログの出力)

# この記事を読んでできるもの

![結果.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11002/4dc656bc-d0f7-21e5-f9a5-eb8976f1a79f.jpeg)

PySimpleGUIを使用して、ファイル、フォルダをダイアログを使ってファイルを取得、
取得したファイルを使用して処理を実行、ログを画面にすることができます

# 概要
脱VBAとしてPythonを使用している記事や本がちらほらあり、Excelファイルの操作に[OpenPyXl](https://openpyxl.readthedocs.io/en/stable/index.html) を使用している記事はありますが、ファイルの起動に関してはCLIのものがほとんどでGUIで操作する記事はあまり見かけません。
今回はVBAのGUI相当のものをPySimpleGUIで行う説明を行います。
PySimpleGUIの基本的な操作については[Tkinterを使うのであればPySimpleGUIを使ってみたらという話](htt

元記事を表示

ChromebookのcrostiniでPython3のrequestsとBeautifulSoupを使う時の設定

# はじめに
以前、Python3でスクレイピングしてみた([Python3とBeautifulSoup使って図書館で借りた本をスクレイピング – Qiita](https://qiita.com/optimisuke/items/047dbf5aa4c07434be5e))けど、環境変わってもう一度試してみたら動かなかった。設定変更したら動いたので、その時のメモを残す。

# 環境構築
“`
Google Chrome OS
Version 80.0.3987.89 (Official Build) beta (64-bit)
“`

“`
$ python3 –version
Python 3.5.3
$ sudo apt-get install python3-pip
$ pip3 –version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.5)
$ sudo apt-get install python3-bs4
$ sudo apt-get install python3-requests

$

元記事を表示

python初心者がIT企業にインターンしてみた[3日目 雲行きが・・・]

昨日疲れすぎて投稿できんやったから今日投稿する

#衝撃の事実
今日も元気よく出勤。今日の昼飯は俺の好きなカレーパンだ。なんて呟いているおじさんを横目に、コーヒーを購入(俺かと思ったか)。
それはさておき、いつも通り朝の打ち合わせがあったが、そこでまさかの事実を聞かされる。「来週までに企画提案書を提出してね。あとその企画をクライアントにプレゼンしてもらうからよろしく。」
What a fork!!!(good placeより引用)

##AIをつかったチャットボット 開発?
打ち合わせで企画をプレゼンすることになったのだが、その内容はAIを使ったチャットボット。それを聞かされて一日が始まったわけだが、何もわからないためまずチャットボットサービスの比較表を作った。会社にデータがあるため載せられないけど、軽く紹介しよう。

###チャットボットとは?
チャットボットは人間が入力するテキストや音声に対して、自動的に回答を行うことで、これまで人間が対応していた「お問い合わせ対応」「注文対応」などの作業を代行することができる。(まるまるコピー)
https://ferret-plus.com/8

元記事を表示

OTHERカテゴリの最新記事