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

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

【Python】importするモジュールと同名のファイルを作るとAttributeErrorを引き起こす

ライブラリの動作確認をしようと思っただけなのに思わぬところでハマりました。

例えばjsonモジュールを試すために`json.py`というファイルを作ったとします。

“`python:json.py
import json

obj = {
“id” : 1,
“name” : “hoge”,
}

str = json.dumps(obj)
print(str)
“`
問題なさそうなコードですが…。

これは、実行するとエラーになります。

“`bash
$ python3 json.py

AttributeError: module ‘json’ has no attribute ‘dumps’
“`

jsonモジュールにdumpsがないって言われてます。

これは自身がjsonというファイル名なので標準モジュールより優先されて読み込まれてしまったためです。

よって、リネームしてやれば解決です。

“`
$ mv json.py json_test.py
$ python3 json_test.py
{“id”: 1, “name”: “ho

元記事を表示

メトロポリス・ヘイスティング法を用いてPythonで2019統計検定準一級の問題を数値的に考える

##自己紹介
データサイエンスを専攻している大学生です。コンピューターサイエンスをメインに学んでるわけではないので多少知識はあれども、明らかに知識不足です。
画像解析に興味を持ち勉強していますが、数理統計学の知識を深くしたいという思いから統計検定準一級合格を目指して勉強中です。
##本題
今回はベイズ統計学とシミュレーション技法を勉強中に触れたMCMC(マルコフ連鎖モンテカルロ法)、特にその中でもメトロポリスアルゴリズムについての理解を深めようと思い、試しにPythonでプログラミングしてみたので記事にしました。
具体的な内容はタイトル通り去年の統計検定準一級の問7で出題されたベイズ統計学の問題をメトロポリスアルゴリズムを用いて考えてみようというものになっています

「MCMCやベイズ統計学について勉強してみたけどよくわかんない」みたいな方が参考にできるような記事を書きたいなと思いますので、逆にベイズ統計学やMCMCを熟知した専門の方からすると面白くもなく、間違いなどが目立つかもしれません。そのようなときは是非ご指摘よろしくお願いします。

#環境
・windows
・python 3

元記事を表示

Pythonゴルフテク(AtCoder)

#はじめに
AtCoderで今まで培ってきたPython3の中で短く書くテクニックの紹介となります。
なお、AtCoderのPython3のバージョンは3.4.3で、例えばf-stringsやセイウチ演算子など、短くなりそうな機能が使えなかったりします。
あくまでAtCoder上でのテクニックということになります(他のところで使えるかは知らない)。
思いついたことを書いていくのでとっ散らかってると思います。すいません。
#標準入力
Pythonの標準入力と言えばinput()を思い浮かべると思いますが、短く書くときは、input()よりもopen(0)が使われがちです。
openはファイルを開く関数ですが、第一引数に0を指定することで、標準入力から読み込んでくれます。
例えば、

“`
4
1
2
3
4
“`

のような入力が与えられ、最初の行を変数nに、残りの行をリストaに格納したい場合、

“`py
n,*a=map(int,open(0))
“`

と書くことができます。また、

“`
5 4
1 2 3 4 5
“`

のような入力が与えられ、最初の行をnとk、2

元記事を表示

Djangoのmodelにおいてslugfieldを使うメリット

# Djangoはいいぞ!:relaxed:

いいぞ!ということです。
Djangoにおけるslugがどういうものかについては触れられている記事はあったのですが、じゃあDjangoでslug機能を使うべき理由って何よ?書き方ってどうなのよ?という点に触れた記事はないようなので書こうと思いました。

# slugとはなんぞや?:rolling_eyes:

結論からいうとslugを使う理由はSEO対策のためなのですが、最初にまずはslugについての説明をしましょう。

Django Documentの中の用語集においてslugは以下のような説明をされています。

>スラグ (slug)
ある要素に対して付けられた短いラベルで、英語のアルファベット、数字、アンダーバー、ハイフンからなり、ふつうは URL に使われる。例示すると、次のようなよくあるブログエントリの URL では:
`https://www.djangoproject.com/weblog/2008/apr/12/spring/`
最後にある文字列 (spring) がスラグです。
[用語集](https://docs.dj

元記事を表示

ubuntu20.04+apache+mod_wsgiで、日本語ファイル名がopenできなかった話

* ubuntu20.04
* apache2
* mod\_wsgi (`pip3 install mod_wsgi`でインストール)

ローカルPCで、flaskを使った自作アプリケーションをapache+mod\_wsgiで使っているのですが、ubuntuを20.04にしたら、例外が発生するようになってしまいました。

“`
[Wed Apr 29 04:26:54.738674 2020] [wsgi:error] [pid 38764:tid 140083800012544] UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 22-23: ordinal not in range(128)
“`

発生しているのは`open`関数を呼び出しているところで、対象は日本語ファイル名なので、おそらくそれが問題ではないかと推測。
試しに`sys.getfilesystemencoding`メソッドで確認してみると、確かに「`ascii`」が返ってきました。
しかし、ubuntu19.10まで

元記事を表示

【初心者向け】panadasで移動平均の算出のメモ

### rolling関数使用の事例
データの分析や予測にあたって、グラフの作成等で移動平均が必要な場面は多いと思います。
sqlでもwindow関数を使用すれば、同様の事は可能だと思いますが、pandasのほうが簡単に実現出来る様に思います。

#### pandasのrolling関数を利用して、移動平均を算出する場合のメモを投稿します。
以下の様なcsvがあったとすると。
・ターミナルからheadコマンドの結果

“`terminal:csvファイルの一部

$ head dexjpus_20200417.csv
DATE,DEXJPUS
2015-01-01,
2015-01-02,120.2
2015-01-05,119.64
2015-01-06,118.26
2015-01-07,119.52
2015-01-08,119.51
2015-01-09,118.66
2015-01-12,118.32
2015-01-13,118.16
“`

**【1】移動平均の場合、rolling関数は、以下の様に実行しました。**
– 1.ローリング関数のmeanで移動平均の処

元記事を表示

Python 処理速度向上 Tips

#実行環境
MacBook Pro
python3.7.5

#ループ
###while i < N vs for _ in range(N) ```python i = 0 while i < N: #N=10**6 i += 1 ``` ```python for _ in range(N): pass ``` ![loop.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304572/043e54df-14b2-f4b4-edce-f35e9fdcb0d2.png) #1次元配列 ##配列の初期化 ###[None for _ in range(N)] vs [None] * N vs np.empty(N) ```python tmp = [None for _ in range(N)] ``` ```python tmp = [None] * N ``` ```python tmp = np.empty(N) ``` ![initilize_1dim_arr.png](

元記事を表示

Juliaで色を徐々に変えながらプロットする方法

# やりたいこと

グラフを複数同じキャンバス(figureのほうが適切?)に描くとき、それぞれの線の色を変えたいですよね。
通常、PythonもJuliaも自動で色を変えてくれますが、それをきれいなグラデーションで少しづつ変化させるときれいです。
で、その方法はpythonだと簡単に見つかるんですが、Juliaだとなかなか見つからなかったので、記事にしようというわけです。

## 問題設定
“`math
f(x) = x^{n}, n = 1, 2, 3\cdots 10, x \in [-1, 1]
“`
をプロットしたいとします。ただし、

– プロットは同じfigure中に描く
– nが変わったとき、色を変える
– 色は徐々に(連続的に)変化させる

としましょう。
最終的にこんなプロットができればゴールです。
![goal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349566/69680841-d287-178e-54bb-13456424fce3.png)

## Pyth

元記事を表示

ゼロから始めるLeetCode Day6 「1342. Number of Steps to Reduce a Number to Zero」

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

その対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。

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

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

基本的にeasyのacceptanceが高い順から解いていこうかと思います。

前回
[ゼロから始めるLeetCode Day5 「1266. Minimum Time Visiting All Points」](https://qiita.com/KueharX/items/7949b94ac52e1b81147c)
# 問題

[1342. Number of Steps to Reduce a Number to Zero](h

元記事を表示

【備忘録】データ分析の手順 (titanic)

#データ分析の手順 (titanic)
備忘録としてデータ分析の手順を記載する。

##必要なライブラリのインストール

“`python:titanic.ipynb
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
from pandas import Series,DataFrame
“`

##データの取り込み

“`python:titanic.ipynb
train = pd.read_csv(‘train.csv’)
test = pd.read_csv(‘test.csv’)
submission = pd.read_csv(‘gender_submission.csv’)
“`

##取り込んだデータを確認す
る
“`python:titanic.ipynb
#上位5件を表示
train.head()
#下位5件を表示
train.tail()
#各列のデータ数や平均、標準偏差、最小値、

元記事を表示

TensorFlow2.0系でCIFAR-10データを学習して予測するまで(2)

#概要(TL;DR)

tensorflow2系でCIFAR-10の分類テストをしてみた。(個人的な覚書程度)
[前回](https://qiita.com/takashi_42331/items/7f22f51d8d284b340d1a)に続いて、今回は簡単なネットワークで学習をさせてみる。

下記の作業はすべて、[Google Colab](https://colab.research.google.com/notebooks/intro.ipynb?hl=ja)で実施しています。★GPUも使ってます。(ランタイム-> ランタイムのタイプを変更 -> ハードウェアアクセラレータでGPUを選択)

#TensowFlowで学習

## CIFAR-10のデータを取得
学習データと評価データを取得する

“`python
from tensorflow.python.keras.datasets import cifar10
(x_train,y_train),(x_test,y_test) = cifar10.load_data()
“`

## 学習データの整形
入力データが、

元記事を表示

TensorFlow2.0系でCIFAR-10データを学習して予測するまで(1)

#概要(TL;DR)

tensorflow2系でCIFAR-10の分類テストをしてみた。(個人的な覚書程度)
まずは、CIFAR-10の中身を確認する

下記の作業はすべて、[Google Colab](https://colab.research.google.com/notebooks/intro.ipynb?hl=ja)で実施しています。★GPUも使ってます。(ランタイム-> ランタイムのタイプを変更 -> ハードウェアアクセラレータでGPUを選択)

自前のMacBook Air(1.6 GHz DualCore Intel Core i5,16GB 2133MHz LPDDR3では、学習時間がかかり過ぎて待てない・・・。話には聞いていましたが、GPUの凄さを改めて感じました。

#cifar-10

## そもそもCIFAR-10とは
[CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html)

32×32サイズのカラー画像を10クラス(分類)で各6,000枚(全60,000枚)が含まれている学習用セットだそうな。

元記事を表示

DjangoでCSSを反映させる方法

# DjangoでCSSを反映させる方法
DjangoでCSSを反映させる方法をご紹介します。

### 環境
Python 3.7.6
Django 3.0.5

### setting.pyの編集
setting.pyの最下部に下記のようなコードを記述します。

“`setting.py

# 上部省略

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/

STATIC_URL = ‘/static/’

STATICFILES_DIRS = (
[
os.path.join(BASE_DIR, “static”),
]
)
“`
### CSSファイルの追加
staticフォルダを追加し、下記のような構成にします

“`
| – webproject
| | – setting.py
| | – urls.py
| – webapp
| | – urls.py
| | – views.py

元記事を表示

特定組織の所有するドメインを取得しよう

# 事のきっかけ
世の中には、色々と考える人がいるもので、イラネッチケーという日本放送協会のみ視聴不可になるものがあるそうだ。(結構前だけど)
そこで、それをデジタルに持って来たときにどの様な処理になるのか考えてみたくなった。

# 更新履歴
– 2020/4/28 投稿

# 考えた事
– 特定の組織が保有する電波を視聴不可にする。=>ネット的に考えれば、特定の組織が保有するドメインのアクセスを不可にする

# どの様に実装するか(ドメイン検索)
1. JPRSなどが保有しているwhoisのurlを使って、whoisコマンドでドメインを調べる=>力不足なのかwhoisコマンドでは、組織名を元に調べることができなかった。
2. JPRSなどが保有している検索サイトを使って、プログラミングでリクエストを送って帰って来たデータを整理する。=>成功

今回は、2.を用いる。

## 実装(ドメイン検索)
今回は、考えるキッカケとなった日本放送協会を例とさせていただきます。他意はない。

“`python:python3.8
import requests
import re

url =

元記事を表示

企業名認識の辞書「JCLdic」をMeCabに使う

# この記事のついて

この記事は企業名辞書(JCLdic)の使い方を紹介します。

# 辞書紹介

– [「JCLdic」公開ページ](https://github.com/chakki-works/Japanese-Company-Lexicon)

JCLdicは800万以上の企業名とその別名を含まれています。これまでの辞書では企業名のカバレッジが低く、表記揺れで認識にくいという問題を解決するために作られました辞書です。

# 辞書の取得

– [JCLdic Download Page](https://github.com/chakki-works/Japanese-Company-Lexicon#download-links)

JCL_slimを例にして、MeCab Dicをダウンロードします。

# 環境の準備

MeCabとmecab-python3インストールはまずやってください。

ダウンロードした`jcl_slim_mecab.dic`を指定のフォルダに移動します。

“`bash
$ mkdir /usr/local/lib/mecab/dic/use

元記事を表示

Djangoのプロジェクト作成から初期設定をする方法

# Djangoのプロジェクトの作成から初期設定まで
Djangoでプロジェクトを作成してから初期設定を行うまでの解説を行います^_^

### 環境
Python 3.7.6
Django 3.0.5

### プロジェクトの作成
まずはプロジェクトを作成するためのディレクトリに移動します。
そこで下記のようにプロジェクトを作成します。この際にプロジェクト名は任意になりますが今回はwebprojectになります。
フォルダの中を確認するとmanage.pyが含まれていることが確認できます。

“`
ChisakinoMacBook-Pro:webapp Chisaki$ django-admin startproject webproject .
ChisakinoMacBook-Pro:webapp Chisaki$ ls
manage.py webproject
“`

次に下記のようにフォルダを追加していきます。この際にもフォルダの名前は任意になりますが今回はwebappになります。

“`
ChisakinoMacBook-Pro:webapp Chisaki$ pyt

元記事を表示

pygameでウィンドウのみ表示されて何も表示がされない時の対処法メモ

##**pygameを用いる際の初歩的な部分の話です。**

– 自分の環境
– 使用パソコン:MacBook Pro (Retina, 13-inch, Late 2013)
– OS:Catalina
– pythonのバージョン:Python 3.7.3

どうやら、macだとMojave以降のOSだとこの不具合が起こるようです。

##対処法
**pygameの開発バージョンをインストール**
ターミナルで以下のコマンドを入力しましょう。

“`python
pip3 install pygame==2.0.0.dev3
“`

自分はこの方法で解決しましたが、どうやらpythonのバージョンをアップデートすることによっても解決することができることがあるようです。

記事を書くことに慣れていません。
もしよろしければコメントなどで改善点を指摘してくださると幸いです。

元記事を表示

大量のIP RangeリストをAWS Security Groupに反映するスクリプト(メモ)

Security Groupのルールを設定する雑スクリプトです。作業メモ的に残しておきます。

Azure PipelineのIPが多すぎ(100個以上)、デフォルトでSecurity GroupのRuleは60個まで。という面倒な状態だったので、雑にPythonスクリプト作りました。

## 背景(前提?)的なもの

– AWS側Security Groupで、IP制限している。
– Azureのサービス(Azure Pipeline等)からAWS側に接続したいがIP制限でNGになる。
– 設定すべきプロトコルとポートは、HTTPS:443 だけで充分。
– Azureで使用されるIPは下記URLで公開されている(JSONファイルでダウンロードできる)。
– https://www.microsoft.com/en-us/download/details.aspx?id=56519
– APIでIPレンジを取得する事もできるが、とりあえず手メンテ。

## スクリプト

Python3で、ソースコードを3ファイルに分けてます。同じフォルダに入れてください。

元記事を表示

行列の線形変換のデモプログラムを書いてみた

#初めに
数学ガールの秘密ノート「行列が描くもの」
第4章トランスフォームで「リサ」が行う線形変換のデモンストレーションを
Pythonで行ってみました

#動作環境
Python3

#実装例と結果
以下、本書の記述順に記載しています

###点を表示
グラフ上に点(2, 1)に表示

“`python
import matplotlib.pyplot as plt
import numpy as np

p21 = np.array([2, 1])
plt.plot(p21[0], p21[1], marker=’.’)

plt.show()
“`

Screen Shot 2020-04-28 at 11.27.52.png

###点を移動
点(2, 1)を行列

“`math
\begin{pm

元記事を表示

Pythonインストール

#はじめに
こちらではpythonのインストールから構築実行までの説明ができればと思います。

#環境
[VirtualBox](https://www.virtualbox.org/)
[Vagrant](https://www.vagrantup.com/)
[Cent0S7](https://www.centos.org/download/)

[こちら](https://qiita.com/I_S-657/items/63528d09995138c9e46d)で構築の紹介をさせていただいてます参考にどうぞ

#手順
まずはIUSCommunityからインストール

IUS [Community](http://iuscommunity.org/)とは?
定期的にRed Hat Enterprise Linuxとそのクローン向けのRPMパッケージを提供しているコミュニティ。

らしいです。

できるだけ最新のソフトウェアを出してくれるらしいのでインストール

“`
$ sudo yum install https://repo.ius.io/ius-release-el7.r

元記事を表示

OTHERカテゴリの最新記事