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

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

現場についていくための数学備忘録 #2

## 集合とは
第2回も引き続き集合についてまとめていきます。

## 集合の種類
代表的なもの(これが全てなのか?)に以下の物があるらしいです。

– 部分集合

“`
# 部分集合 大きな集合Uの中に、Aは含まれる
>>> U = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
>>> A = {2, 3, 9, 10}
>>> A <= U True ``` - 補集合(部分集合から弾かれたもの?) 後述の差集合で求めらる - 積集合 ``` # 積集合 2つ集合の共通要素 >>> U = {1, 2, 6, 10}
>>> A = {7, 3, 6, 9}
>>> U & A
{6}
>>>
“`

– 和集合

“`
# 和集合 集合の合算
>>> U = {1, 2, 6, 10}
>>> A = {7, 3, 6, 9}
>>> U | A
{1, 2, 3, 6, 7, 9, 10}
# 同じ要素は1つとしてカウントされる
“`
– 差集合

“`
# 差集合 一方の集合から共通の要素を引く
>>> U = {1, 2, 6, 10}
>

元記事を表示

C言語のリンクリストをオブジェクト指向風に書いてみる(PythonとJavaとのコード比較あり)

## はじめに

最近、「C言語でリンクリストを書いてみた」という投稿を2件みかけました。
いずれも、C言語らしい書き方をしておられましたので、オブジェクト指向風な書き方をコメントさせていただきました。

* [リンクリストの練習 その1 – Qiita](https://qiita.com/Kippie/items/b8a0c092b8e9c591b473)
* [C言語 再帰処理とリンクリスト構造を使った数字のリスト – Qiita](https://qiita.com/Kchan_01/items/359a63b796ea90df26ff)

オブジェクト指向風な書き方をすることで、オブジェクト指向の理解の助けになればと思い、本記事を書くことにしました。
難しいオブジェクト指向の考え方は抜きにして、構造体の拡張版=ユーザ定義型としてクラスを使います。

## リンクリスト

まず、リンクリストに使う構造体を2種類用意します。

* `struct node` : リストの要素
* `struct list` : `node`をリンクリスト管理

以下のルールでオブジェクト指向風な

元記事を表示

現場についていくための数学備忘録 #1

## はじめに
現在、やや機械学習よりな現場に派遣されているが、プローパーの方々が言ってることが全くわからん….

と、言うわけで自分が勉強した数学を備忘録として適当にまとめていこうかと思います。
__ほんと適当かつ、ざっとしか理解できないので、優しい目で見てもらえれば嬉しいです。__

## 機械学習で使用する数学
– 線形代数(行列)
– 微分
– 確率・統計

などですかね?

現在書籍を使って高校数学を勉強しているので、学んだことをoutputしていきます~

## 集合と確率

今回は集合についてです。
集合とは数学の正解で、「はっきりと区別できて、同じ性質を持ったデータのあつまり」だそうです。
正直よくわかりませんでしたが、例で言うと

“`
自然数 = {1, 2, 3, 4, 5}
“`

これは集合で、

“`
今年の暑い日 = {28℃, 30℃, 29℃, 32℃, 31℃}
“`

これは集合ではありません。

この違いですが、
__無限にある数の中から1 ~ 5は誰がどうやっても、取り出すことはできますが、__
__今年の暑い日などの人によって判

元記事を表示

大小文字区別しない辞書機能を作ってみました

※特殊メソッドをオーバーライドで実現します。

“`python:dictex01.py
class PcInformation:
def __init__(self):
self.pc_dict = {}

def __getitem__(self, key):
return self.pc_dict.get(key.upper(), ‘—未設定—‘) # キーは大文字で統一

def __setitem__(self, key, value):
self.pc_dict[key.upper()] = value # キーは大文字で統一

def __delitem__(self, key):
del self.pc_dict[key.upper()] # キーは大文字で統一

def __len__(self):
return len(self.pc_dict)

pc_inf = PcInformation()
pc_inf[‘wpc001’]

元記事を表示

Pythonを実行しているプラットフォーム識別(Kaggle / Colab / Windows)

# 目的
コンペなどで、ローカルとクラウドで、ファイルの読み込み処理やimportモジュールなどが、変わるので自動で切り替えられるようにする。
Kaggle, Google Colaboratory, ローカル(Windows10)

# 実行環境 (2020/3/15現在)
– Windows 10 Home(64bit)
– kaggle
– google Colaboratory

# 概要/方法
判別方法、
1.ローカル(Windows)とクラウド判定は、os.nameでOSから判定
2.Kaglle/Colabは、Kaggle固有の環境変数の’KAGGLE_DATA_PROXY_TOKEN’の有無で判定

もっと賢い判定方法があったら、ぜひ教えてください。

### 各プラットフォームの処理内容
– Windows:
– ローカルフォルダから読み込み
– matplotlibの日本語設定
– Kaggle:
– kaggleクラウドフォルダから読み込み
– Google Colaboratory:
– Google Driveから読み込み

元記事を表示

pyplotではxticks()、Axesではset_xticklabels()を使うんだって。

(matplotlib ver3.2.0)

matplotlibで描画したグラフの目盛り文字列を変更したい場合、タイトルの通り使い分けます。
ちょっと使い方にクセがあるのでまとめました。

### 基本的な構文

“`python
#pyplot.xticksは、目盛りの座標値を第一引数、置き換え文字列を第二引数とする
plt.xticks([1, 2, 3, 4, 5], [ “A”, “B”, “C”, “D”, “E”])

#axes.set_xticklabelsは、置き換え後の文字列だけ指定する
axes.set_xticklabels([“A”, “B”, “C”, “D”, “E”])
“`

同様に、pyplot.yticks()も、axes.set_yticklabels()で置き換えられます。

### axes.set_xticklabelsの注意すべき点
axes.set_xticklabels()では、目盛りを全体の文字列を順次指定する必要があるため、目盛りがたくさんあると、一部の目盛りだけを変更したい時などに面倒です。

例えば、次のようにプロット

元記事を表示

AtCoderで自動サンプルテストケース&手入力値テスト実行 with VS Code

# はじめに
今までAtCoderはPython × Jupyter Labでやっていました。
今回、新しくVS Codeを使ってみたいということと、今までサンプルテストケースの実行が毎回手間だったことがあり、ググってみたらいい方法があったので残しておきます!

今回のゴールは以下の操作ができるようになることです。
1. VS Code上で“`Ctrl + Shift + B“`でサンプルテストケースでのテストを自動実行
2. VS Code上で“`F5“`で手入力値でのテスト実行

# 環境
* Ubuntu 18.04 LTS
* VS Code 1.42.1
* Python 3.7.1

今回Ubuntuで構築していますが、使っているのはシェルスクリプトとVS CodeなのでMacは勿論、WindowsでもWindows Subsystem for Linuxが入ってれば大丈夫…なはず?
※動作確認はしていないです!

# 参考にしたサイト
それぞれからつまみ食いさせて頂いた感じです。
大変参考になりました。ありがとうございます!
[Visual Studio Code

元記事を表示

QWidgetのサブクラスの背景色が設定できない

# QWidgetのサブクラスの背景色が設定できない

表題通り。解決済み。解決策は記事の下部にある。

QWidgetのサブクラスから作成したWidgetの背景色を設定出来なかった。
だが継承元のQWidget()で同じように試したところ、何故かうまくいった。

なんなのだこれは!

とおもって調べたので一通りまとめておく。

## 再現コード

“`python
# coding: utf-8

from PySide2 import QtWidgets, QtGui, QtCore

class Widget(QtWidgets.QWidget):
def __init__(self):
super(Widget, self).__init__()
self.setStyleSheet(“background-color:red”)

layout = QtWidgets.QVBoxLayout()

button_widget = QtWidgets.QPushButton()
butt

元記事を表示

森久保乃々のネガティブ度を感情分析してみましたけど…。【ポジパと比較】

[こちらの記事](https://zine.qiita.com/event/collaboration-cotoha-api/)を見て[COTOHA API](https://api.ce-cotoha.com/)というものを知り,面白そうだったので触ってみることに.
今回は[COTOHA API](https://api.ce-cotoha.com/)を使って森久保乃々のネガティブ度を感情分析してみました.

# 環境
– macOS Mojave 10.14.6
– Python 3.7.6

# COTOHA APIとは
自然言語,音声の処理を簡単に行えるAPIです.例えば構文解析や音声認識などができます.NTTコミュニケーションズが提供しています.

# 森久保乃々とは
アイドルマスターシンデレラガールズに登場するアイドルの1人で,14歳の少女です.机の下がホームで,ときにはプロデューサーから逃げ回ったり,ときにはアイドルを頑張ったりする,そんな子です.
普段は「〜ですけど…」と後ろ向きな発言が多い彼女ですが,一体どれほどネガティブなのか,それを検証してみようというわけです

元記事を表示

Pythonライブラリ(NumPy,matplotlib)を使ってみた。

はじめに

今までプログラミングの学習記録をエクセル(ローカル)で取ってきました。恥ずかしいので一部抜粋して以下の感じです。

 

ただ4か月近く一人で勉強していたので、最近モチベーション維持に限界を感じてきています。

ですので、現状打破という目的も兼ねて、学習記録をこちらでも少し投稿していこうと思います。

(ついでに、リアルに交友できる方ができることも期待しつつ。)

同じくプログラミング学習している方々と切磋琢磨できれば幸いです。

ってなわけで、今日学習した内容をまとめていきます。(学習時間とかは引き続きローカルで記録していきます。)

今日の学習内容

今日は気になっていたPythonについて学びました。

ちょっと前にDjangoでWebア

元記事を表示

【AzureFunctions・Python】Queue Storageバインドで関数を連鎖させる

# はじめに
本記事は、AzureFunctionsのうちQueue Storageのバインドを利用してAzureFunctionsを連鎖させることを目指します。

概要としては以下の通りで、

* HTTPリクエストで起動したAzureFunctionsがQueueStorageにメッセージをenqueue
* Queueへのenqueueをトリガーに別のAzureFunctionsを起動する

図で表すとこんな感じです。

![azure-Page-2 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260295/652bcf3b-90f4-d274-bd5d-27e04ea1e5ef.png)

1. Userなどがcurlを叩く
2. ②のAzureFunctionが起動
3. Queue Storageにメッセージがenqueue
4. enqueueをtriggerに③のAzureFunctionsが起動

# 前提

* VSCodeなどを利用してAzureFunctionsの作成・

元記事を表示

[Python] Ubuntuでmatplotlibの日本語化

# はじめに
Pythonでクローリングとスクレイピングを勉強しているのだが、本の途中で出てきたmatplotlibの日本語化がスムーズにできなかったのでまとめておきます

# 環境
Windows10上のvirtualboxでUbuntuの仮想環境
Ubuntu 18.04.4 LTS

# 経緯
– matplotlibのインストール

環境によってことなるので注意してください
コマンドで以下を実行

“`terminal
pip install matplotlib
“`

– 日本語フォントをUbuntuにインストール

“`terminal
sudo apt install -y fonts-migmix #Ubuntuの場合
“`

– 日本語をラベル名にして図を描画

“`python:japanese_label.py
import matplotlib
matplotlib.use(“Agg”)

import matplotlib.pyplot as plt

plt.plot([1,2,3,4,5],[1,2,3,4,5], “bx-“, labe

元記事を表示

米粒を撒いて円周率を求める(モンテカルロ法)

# 追記
モンテカルロ法を実装してみた記事です。すっかり忘れてしまっておりました。

# 1. はじめに
子供向けの統計の本[1]を読んでいたところ、米粒を撒いて円周率を計算しようという記事が目に入りました。面白そうだったので、ランダムに発生させたx,yの座標のデータを使って円周率を計算してみました。

[手順]
だいたいこんな感じ
1. 正方形とその正方形に内接する円を準備する。
2. そこにデタラメに(ランダム)にプロットする。この **デタラメに** というのがポイント!
3. 円の内側に入った座標と外側の座標の数から円周率を求める。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110541/de87f940-a02f-6b97-f3a8-d8d3b55d8515.png)
[目的]
どのくらいの座標(サンプル、つまり米粒)があれば、本当の円周率に近い値を算出できるようになるか、円周率に近い値が算出できるかを確かめてみます。

# 2. 実装する
実際に米粒をまいて実験するのは、

元記事を表示

Heroku、Flask、SQLAlchemyで掲示板を作る

#はじめに
今回、掲示板の作成について、以下の通り6つに分類にして記述した。
(1)環境構築
(2)csvで掲示板
(3)SQLとSQLAlchemyで掲示板
(4)PostgreSQLとSQLAlchemyで掲示板
(5)SQLAlchemyを使ってデータ操作
(6)Postgresqlを使ってデータ操作

#(1)環境構築
デスクトップにディレクトリtestを作成。
test内に仮想環境を構築して起動。

“`
python3 -m venv .
source bin/activate
“`

必要なフレームワークとwebサーバーをインストール。

“`
pip install flask
pip install gunicorn
“`

#(2)csvで掲示板
まず、ローカル環境でcsvを使って掲示板を作る。
##①ディレクトリ構成

“`
test
├app.py
├articles.csv
├Procfile
├requirements.txt
└templates
├index.html
├layout.html
└index_result.htm

元記事を表示

matplotlibで特定のデータにだけマーカーを適用する方法

#はじめに
[雑誌の掲載順をグラフ化するとき](https://seigenkousya.github.io/post/kirara_order_2020/)に、matplotlibで特定の項目にだけマーカー(グラフに打つ点)をつけたくなった(センターカラーのときにだけわかりやすいように目印をつけたかった)が、探しても全く出てこなかったのでメモ。
![max_2020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332794/137da981-190f-4ff5-291f-3301a27bb9f7.png)
↑こんな感じで強調するために特定の値の時だけマーカーを適用したかった。

#環境
“`
$ uname -a
Linux kali 4.18.0

元記事を表示

説明変数、目的関数の作り方

#目的関数の書き方
dfが

– PassengerID (乗客のID)
– Survived (trainデータだけ)
– Pclass (部屋のクラス)
– Name
– Sex
– Age
– SibSp
– Parch
– Ticket
– Fare
– Cabin (客室を持っていたか)
– Embarked (どこの港で乗ったか)

このような項目を持っていた時に
##説明変数は

~~~python
x=df[[“項目名1″,”項目名2″,”項目名3″,”項目名4”]]
~~~
というように、自分選びたい項目を[[“項目”]]のように追加します。

##目的関数
目的関数は一つしか項目がないので、

~~~python
t=df[“目的関数の項目”]
~~~

###終わり
こんなかんじで、このあとモデルに学習させたりします。

元記事を表示

PEP-362 (Function Signature Object) を読んだよメモ

`__signature__` という属性がどこからやってきたのを理解するために [PEP 362 — Function Signature Object](https://www.python.org/dev/peps/pep-0362/) を読むことになったので、自分の理解をメモに残しておく。

## 概要

* これまで関数シグネチャの表現は複雑な形式で表現されていた
* PEP 362 では、関数シグネチャを表現する `Signature` というクラスを使って、関数シグネチャをシンプルに表現できるようにする
* また、 inspect.signature() という関数を使って、かんたんに関数オブジェクトから関数シグネチャを取り出せるようにする

## 感想

あとは細かい使い方なので説明は省きます。PEP 362 を読んでもいいし、Python のドキュメントの [inspect のページ](https://docs.python.org/ja/3/library/inspect.html#introspecting-callables-with-the-signatur

元記事を表示

AtCoder パナソニックプログラミングコンテスト2020 参戦記

# AtCoder パナソニックプログラミングコンテスト2020 参戦記

## panasonic2020A – Kth Term

2分半で突破. まあ、書くだけ.

“`python
K = int(input())

t = [1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14, 1, 5, 1, 5, 2, 2, 1, 15, 2, 2, 5, 4, 1, 4, 1, 51]
print(t[K – 1])
“`

## panasonic2020 B – Bishop

6分くらい?で突破. 1WA. H と W が1の場合をすっかり忘れてました.

“`python
H, W = map(int, input().split())

if H == 1 or W == 1:
print(1)
elif W % 2 == 0:
print(H * W // 2)
else:
if H % 2 == 0:
print(H * W // 2)
else:
prin

元記事を表示

Pythonでパナソニックプログラミングコンテスト2020を解きたかった

### はじめに
今回はA,Bしか解けませんでした。ABC相当のコンテストでAとBしか解けないのは良くない。

### A問題
[問題](https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_a)

**考えたこと**
問題に書いてある数列をコピーして、kでindexを指定してprintしました。

“`python
k = int(input())
l = [1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14, 1, 5, 1, 5, 2, 2, 1, 15, 2, 2, 5, 4, 1, 4, 1, 51]
print(l[k-1])
“`

### B問題
[問題](https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_b)
1WA
**考えたこと**
問題文の図を見ると、i行目とi+1行目を足すとWになると思ったのでhの偶奇で判別して計算しようとしたら1WAしました。WAの理由は、W,Hが1の

元記事を表示

強化学習における迷路問題の避難経路設計への応用の可能性

#前書き

 春休みの間を利用して安全工学に関する強化学習による研究を進めていたが、どうにも具体的な形にまで昇華できなさそうであるので、今回できた分までを背景と並べてここに示す。

#強化学習と研究背景
##迷路問題
 強化学習において、迷路問題は良く取り扱われる問題の1例である。
 実装の例としては[こちら](https://qiita.com/kyogoku_meta/items/a7bb70a787baa9b4c39e)を参考にした。

説明:
meiro.png
 図で示したような迷路で、S(start)からG(Goal)までの道筋を学習することが目的となる。今回はQ学習でε‐greedy法を用いて学習を行っていく。

 Q学習ではそれぞれのマス目に対して取れる移動の選択肢(方策)が定められてい

元記事を表示

OTHERカテゴリの最新記事