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

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

Python で psd ファイルを処理できるライブラリ psd-toolsについて

# Python でPSDファイルを処理できるライブラリ psd-tools

▼公式ドキュメント
https://psd-tools.readthedocs.io/en/latest/

## テスト画像
今回はこちらの画像をサンプルとして使用します。![3070374.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69701/a118272d-c836-7635-372b-f729d3fad46b.jpeg)
Designed by Freepik

▼ダウンロード先
https://www.freepik.com/free-psd/restaurant-gift-voucher-template_5903685.htm#page=3&position=11

▼Photoshop上でみたレイヤー情報
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazon

元記事を表示

python3でbasemapのインストールに失敗するとき (Mojave)

##うまくいかなかった

python3 に basemap を入れて使いたかったが、公式のやりかたでうまくできなかった人です。下記のような親切な記事通りにやってみたのですが。。。
https://qiita.com/duonys/items/c941bc2818abe5cc1da7

コマンドラインでも、jupyterでも

“`
ImportError: No module named ‘mpl_toolkits.basemap’
“`
を吐いて止まりました。

##解決編

結論としては、StackOverflow の [この記事](https://stackoverflow.com/questions/42299352/installing-basemap-on-mac-python) の 14番目(Alexander Pavlovさん)のコメントにある

“`
pip3 install https://github.com/matplotlib/basemap/archive/master.zip
“`
を実行することで解決しました。ただし、不要なライブラリも多数入っ

元記事を表示

多クラス分類の結果の混合行列の集計、評価指標の計算

多クラス分類で、未知データを入力とした際、各クラスへの分類確率の予測値が算出される。

テストデータを用いた評価の際、混合行列を書く必要があるので、この記事では、その書き方を例を示す。

## データの用意

3つのクラスに対して、5つのデータを分類器に入力した結果を `results`、正解を `y_true` とする。

“`py
results = [
[0.1, 0.2, 0.7],
[0.5, 0.3, 0.3],
[0.2, 0.3, 0.2],
[0.2, 0.7, 0.2],
[0.2, 0.5, 0.2]
]
y_true = [
[0, 0, 1],
[1, 0, 0],
[0, 0, 1],
[0, 0, 1],
[0, 1, 0]
]
“`

## 混合行列を出す

利用するものとしては、 `sklearn.metrics.confusion_matrix` を使う。

[sklearn.metrics.confusion_matrix](https://scikit-lea

元記事を表示

PythonのコンソールをUNKOまみれにする

[「文科省のPythonはPythonじゃねぇ」](https://qiita.com/nagataaaas/items/ba33c4c4e0df0b5aa0c4)を読むまで知らなかったんですが、Pythonは組み込み関数も上書きできちゃうんですね。
で、調べてみると、“`builtins.()“`でもとの組み込み関数も呼び出せると。

・・・と、いうことは、プログラムの先頭あたりで

“`
import builtins
def print(str):
builtins.print(‘UNKO’)
“`
といれておくだけで、後は何をprint()しても

“`
UNKO
“`

って表示される・・・

![2019-11-07_010140.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/db344bff-5515-43b4-dfb0-88c62809297c.png)

テロだ・・・・。

元記事を表示

IPアドレスをKibana+Elasticsearchでプロットするメモ

#目的
いろんなサーバを運用しているのですが、どこの国からアクセスされてるかをプロットしたい!
(Elasticsearch + Kibana + Python3で)
でもLogstashは使わない(事情があって使えない)・・・という時のメモ(普通ない)

#環境
ubuntu 18.04
Elasticsearch 7.4
Kibana 7.4
※Elasticsearchについてはいろいろ情報があるので、9200ポートで動いてるのが前提で書いてます。
 同じくKibanaは5601で動作中

#使用するモジュールのインストール

“`
sudo pip3 install python-geohash
sudo pip3 install geoip2
sudo pip3 install elasticsearch
sudo pip3 install pytz
“`

#geoip2用のマップをダウンロード
MAXMINDのページから「GeoLite2 City (MAXMIND DB版)」をダウンロード
[MAXMIND](https://dev.maxmind.com/geoi

元記事を表示

Python初心者が「Python文法詳解」を読んだメモ #2

# バックナンバー
– [Python初心者が「Python文法詳解」を読んだメモ #1](https://qiita.com/usayomo/items/7024c619c5f72462cb10)

# 第3章 式とデータ型
– 論理演算の結果を表す“ bool“ 型も数値型のオブジェクト。
– Pythonのデータはそれぞれ固有の型を持っているが、全て“ object“ 型から派生している。
– どんなオブジェクトであれ“ object“ 型のインスタンスであり、全ての型は、“ type“ という型のオブジェクトである。

“`py:オブジェクト属性に関連する組み込み関数
>>> setattr(obj, ‘ham’, 100) # obj.ham = 100 と同じ

>>> getattr(obj, ‘ham’, 999) # try:
100 # return obj.ham
# except AttributeError:

元記事を表示

Python3.8でscikit-learnなどのライブラリがインストールできない問題

# 概要
以下のサイトよりGUI上から最新のPython3.8をインストールしましたが、
機械学習を行う際に使用する基本的なライブラリ(scikit-learnなど)
をインストールできなかったので、
その解決方法についてお伝えします。

結論からいうと、**Python3.7.3を再インストールしたら上手く行きました。**

[Pythonサイト](https://www.python.jp/install/macos/index.html)

# エラー内容
“`
% pip3 install scikit-learn

・・・中略

Building wheels for collected packages: scikit-learn
Building wheel for scikit-learn (setup.py) … error
ERROR: Command errored out with exit status 1:
command: /Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8

元記事を表示

DjangoアプリケーションをApacheで公開する

Djangoを用いて開発したアプリケーションをApacheサーバ上で公開したのでその手順をまとめておきます。

###http.confの編集
“`conf:httpd.conf
WSGIScriptAlias / “/path/to/project/project/wsgi.py” process-group=hoge.com
WSGIDaemonProcess hoge.com python-path=”/path/to/project/project”
WSGIProcessGroup hoge.com
“`

このように設定することでアプリケーションにアクセスできるようになります。
この時、wsgi.pyまでのディレクトリのアクセス権限に注意しておかないとForbiddenが表示されます。

元記事を表示

【中級者への道】Pythonの*args, **kwargsって何?

# はじめに

Pythonのコードをよく見ていると

“`python
def f(*args, **kwargs):
pass
“`

`*印付きのargs`
そして`**印付きのkwargs`というのを見かけます。

これは何なのでしょうか??

# そもそも何の略?

args, kwargsはそれぞれ何の略なのでしょうか?

英語で引数を`argument`といい、複数なら当然argumentsです。
Pythonはかなり省略しがちな記法であり

– args = argumentsの略 可変長タプル
– kwargs = keyword argumentsの略 キーワード辞書

という意味になっています。

# *args

`*args`は、関数で渡された**余ったキーワード指定なし引数**を、一個のタプルで受け取ることの出来る記法です。

例えば、以下のようにたくさん与えられた整数を足して返す関数accumulateを考えてみます。

“`py
def accumulate(*args):
print(args)
return sum(a

元記事を表示

[python] スカラーの判定方法

入力引数がスカラーかどうかを簡単に判定したいとき,matlabだと[isscalar](https://jp.mathworks.com/help/matlab/ref/isscalar.html)という関数があるが,pythonの場合,どうするのがよさそうかわからなかったので調べた。

# バージョン情報
こういった話はバージョン依存性があるので,本記事作成時のバージョンを残しておく。

– python 3.7.3
– numpy 1.17.0

# 方法1: Numberクラスを継承しているかどうかで判定
– [numbers — 数の抽象基底クラス](https://docs.python.org/ja/3/library/numbers.html)

を読むと,こんなことが書かれている。

> class numbers.Number
>  数の階層の根。引数 x が、種類は何であれ、数であるということだけチェックしたい場合、isinstance(x, Number) が使えます。

コードにすると,こんな感じ。シンプルでよい。

“`py
import number

元記事を表示

pygameを用いて簡単な格闘ゲームを自作してみた3

# 今回の目標
[前回](https://qiita.com/kankitu_man/items/4a19d48a34508a8ed7ed)は自分が操作するキャラを作成、描画し左右の移動とジャンプができるようになりました。そして今回目指すゴールは敵キャラの表示と自分の操作キャラで敵キャラを攻撃しダメージを与えることです。
また、諸事情により前回とソースコードに多少の違いがあります。

# 敵キャラの表示と攻撃判定の処理、攻撃が当たった時の判定処理

“`bash:ディレクトリ構造
プロジェクト名/
├ main.py
└ game_parts/
├ __init__.py
├ stage.py
├ fighter.py
├ control.py
├ caluclation_parts.py
“`

“`python:fighter.py
import pygame

import mai

元記事を表示

対話型LINE BOTの作り方001 (さくらVPS & Django)

#概要
WEBアプリの開発未経験者が無謀にも対話型LINE BOTを自作するまでの試行錯誤の記録。
本記事ではWEBサーバのセットアップから始まり、BOTのデプロイ、外部サービスを活用した対話機能の実装までを時系列にまとめる。
この記事をトレースすれば誰でもBOTが作成できるはず。

##インスピを受けたもの
最初のモチベーションとなったものはこれ↓
[LINE BOTでりんな風の自分専用女子高生BOTを作ってみた (Python & Heroku)](https://qiita.com/shiraco/items/58a33b878fa5f1180d75)

その他、基本的にはQiitaにUPされている作例で学習した。
(出典は覚えている範囲でリンクを貼っています。)

##採用したサービス
趣味で作るものだから家計に負担をかけないためにコストミニマムであることは重要である。

| Service | 用途 | 備考 | 維持コスト |
|:—|:—|:—|:—|
|さくらVPS|CentOS 6|IaaSとして安価に導入可能|698円/月|
|LINE@|Messa

元記事を表示

Python一時間触ってみて

・Pythonはtabキーでインデントができる、便利
・inputで簡単に文字入力ができるが、複数入力の場合map(型,input.split())で行う、少し面倒
・基本的なif文やfor文は他の言語とあまり変わりはないが、for文はrangeを使うと少し複雑なものでも一行で定義できるのでここすごく好き、便利

元記事を表示

[Python3] UDP でデータを送受信する方法

# 環境
python 3.x
OS は問わない

# 送信側
“`python:udpsend.py
from socket import *

## UDP送信クラス
class udpsend():
def __init__(self):

SrcIP = “127.0.0.1” # 送信元IP
SrcPort = 11111 # 送信元ポート番号
self.SrcAddr = (SrcIP,SrcPort) # アドレスをtupleに格納

DstIP = “127.0.0.1” # 宛先IP
DstPort = 22222 # 宛先ポート番号
self.DstAddr = (DstIP,DstPort)

元記事を表示

Google Colaboratory でAPIサーバーを立てる。

機械学習を使ったサービスのプロトタイプを短期間だけ公開したい場合AWSでサーバー借りるのもめんどくさいしお金かかるとおもったらColabでもサーバー立てられることを知ったので書き残しておきます。

URL発行に必要なngrokをダウンロード

“`
!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip ngrok-stable-linux-amd64.zip
“`

以下をノートブック上で動かせばURLをくれます。

“`
get_ipython().system_raw(‘./ngrok http 6006 &’)
!curl -s http://localhost:4040/api/tunnels | python3 -c \
“import sys, json; print(json.load(sys.stdin)[‘tunnels’][0][‘public_url’])”
“`

そしてFlaskを使ってアプリケーションサーバーを立てます。サンプルでindex.h

元記事を表示

Python3.8で scipy およびscikit-learnがpip installできない件

# Python3.8で特定のライブラリがインストールできない!(2019/11/5時点)

2019/11にpcを買い替えたのを機に今までpython3.7を使っていたのですが、python3.8に切り替えることにしました。それに伴いライブラリをインストールし直していたのですがいくつかのライブラリがインストールできたのに対して、インストールできなかったライブラリがありました。

**環境はmacOS Mojave 10.14.6です**

### python3.8でインストールできなかったライブラリ
* scipy
* scikit-learn
* pymc3
* matplotlib

### python3.8インストールできたライブラリ
* jupyter notebook
* numpy
* pandas

## 結論を先にいうと
python3.8をアンインストールして、新たにpython3.7をインストールすると解決しました。
なぜ最終的にこのような強硬手段に出たのか、ライブラリをインストールするために何を試したのかを書いていきます。

それでは何を試したのか書いていき

元記事を表示

RaspberryPi + Django + Arduinoで部屋の電気をIoT化

# 目的
趣味で部屋をIoT化、もとい改造しています。
その内の一つとして、部屋の電気→スイッチをスマホから操作してみたくなりました。

ところが、部屋の電気のスイッチを直接いじるには、電気工事士の資格が必要になるため、誰でもモジュールを取り付けることでIoT化できるようなものを作る縛りゲーを自らに課しました。

#使ったもの・開発環境
PC(win10)
RaspberryPi 3 Model B+(NOOBS)
Arduino Nano (廉価版)
Pycharm Professional 2019.2(学生ライセンス)
ArduinoIDE
Python3.7.4(ラズパイ内)
Django 2.2.6(ラズパイ内)
サーボモータSG90

#構想
将来さらに改造することを考えると、ラズパイ1台ですべて制御するのは限度を感じたため、今回はラズパイを親機、arduinoを子機のように使うシステムを構想。Arduino nanoの廉価版はウルトラ安い。また、djangoで作るwebアプリは家の中で動作してくれさえすればいいので、wifi経由でラズパイのipにアクセスして使う。
**ま

元記事を表示

Python初心者が「Python文法詳解」を読んだメモ #1

# はじめに
Pythonの勉強をしようと思って触り始めたので、[Python文法詳解](https://www.amazon.co.jp/Python%E6%96%87%E6%B3%95%E8%A9%B3%E8%A7%A3-%E7%9F%B3%E6%9C%AC-%E6%95%A6%E5%A4%AB/dp/4873116880/ref=cm_cr_arp_d_pl_foot_top?ie=UTF8)を読んで「なるほどー」と思ったところをメモります。
普段はJavaをメインで書いているので、おそらくJavaと違うところ中心になると思います。

# 第1章 イントロダクション
– Pythonという名前は「Monty Python’s Flying Circus」(コメディ番組)に由来。
– サンプルコードで「foo」「bar」「baz」みたいなやつは「spam」「ham」「egg」を使う習慣になっている。(コントで使っていたらしい)
– 見慣れないワードはこれ由来だと思っとけ、とのこと。

# 第2章 Pythonの実行
“`py:_の挙動
>>> 1+1
2
>>> _ # 最後に評

元記事を表示

Pythonによるコレクションの前処理: 組み合わせ

“`py
tests = [‘A,B,C’, ‘D,E’, ‘A,C,E’]
“`

のようなデータがあったとき
これを要素別に
`’A,B,C’` -> `(‘A’,’B’),(‘A’,’C’),(‘B’,’C’)`
`’D,E’` -> `(‘D’,’E’)`
`’A,C,E’` -> `(‘A’,’C’),(‘A’,’E’),(‘C’,’E’)`
にしたい。

つまり以下のようにしたい。

“`py
[(‘A’, ‘B’),
(‘A’, ‘C’),
(‘B’, ‘C’),
(‘D’, ‘E’),
(‘A’, ‘C’),
(‘A’, ‘E’),
(‘C’, ‘E’)]
“`

要求を整理すると、`tests`の変数において、

1. 各要素を配列にする
2. 2つの組み合わせにする

をする方法をまとめる。

一行で書くと以下のようになる

“`py
list(itertools.chain.from_iterable([tuple(itertools.combinations(tuple(i.split(“,”)), 2)) for i in tests

元記事を表示

argparseのhelpに “%” を含めると死ぬ

下のようなPythonスクリプトを作ったとする。

“`python
import argparse

parser = argparse.ArgumentParser(description=”)
parser.add_argument(‘–zoom’,
action=’store’,
type=float,
default=1.0,
help=”拡大率(%)”)
args = parser.parse_args()

print(“zoom is {}”.format(args.zoom))
“`

これは普通に実行できるが、

“`
$ python hoge.py –zoom 2.0
zoom is 2.0
“`

ヘルプを表示しようとするとValueErrorが出てしまう。

“`
$ python hoge.py -h
Traceback (most recent call last):
File “hoge.py”, line 9, in
args = parser.parse_args()

元記事を表示

OTHERカテゴリの最新記事