Python関連のことを調べてみた2021年08月23日

Python関連のことを調べてみた2021年08月23日

ABC61 C – たくさんの数式をPythonで実装

# 目的

AtCoder 版!蟻本 (初級編)で「たくさんの数式」で躓いたので理解したことを備忘録として残す。

https://qiita.com/drken/items/e77685614f3c6bf86f44

## [問題](https://atcoder.jp/contests/arc061/tasks/arc061_a)

1 以上 9 以下の数字のみからなる文字列Sが与えられます。 この文字列の中で、あなたはこれら文字と文字の間のうち、いくつかの場所に + を入れることができます。 一つも入れなくてもかまいません。 ただし、+ が連続してはいけません。

このようにして出来る全ての文字列を数式とみなし、和を計算することができます。

ありうる全ての数式の値を計算し、その合計を出力してください。

“`python
s = input()
n = len(s)

def dfs(i, f):
if i == (n – 1):
return sum(list(map(int, f.split(“+”))))
return dfs(i +

元記事を表示

数学嫌いのための「逆元を使った二項係数の計算」の説明

競プロを始めたばかりで、AtCoderで必要になった二項係数を$10^9+7$で割った余りの計算がわからないと調べていたところ、[けんちょん氏のブログ](https://drken1215.hatenablog.com/entry/2018/06/08/210000)をはじめいくつも分かりやすい記事があったのですが、その中でも数学が苦手な私からすると、うん?とすぐにはいまひとつよくわからないところがちらほらあったので、復習も兼ねて、初学者たる私がつまづいたところを中心に計算方法と原理を書いてみようと思いました。
数学的に厳密な議論ができるとはあまり思えないので、もし万が一これを読んでいる数学苦手な同士がいたら、ここに出てきた数学の用語をさらに調べて正しく理解してもらうとか、なんて検索したらいいかの手がかりにする程度の気持ちで見てもらえると。

・勉強させていただいたけんちょん氏の記事

## 二項係数の計算の大まかな方針
#### 問題 
${}_nC_k$を素数$p$でわ

元記事を表示

Seriesのフィルタリング

#概要
条件に一致する要素を取り出したい場合、**bool型のシーケンスを指定すると、Trueとなるものだけを抽出**できる。

###IN
“`python
import pandas as pd

fruits = [“apple”, “orange”, “banana”, “straberry”, “kiwifruit”]
data = [10, 5, 8, 12, 3]
#Seriesの生成
series = pd.Series(data, index = fruits)
print(series)

#bool型のシーケンスを指定
f = [True, True, False, False, False]

print(series[f])
“`
###out
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1736279/69f83c2a-29e8-076c-7c73-33724dbe9c67.png)

Trueのみ抽出できました。

##条件式の利用
上記ではboo

元記事を表示

Python/LabelEncoder の基本的な注意点

# はじめに
あるデータの一部に機械学習モデルを適応させたい場面があった。データは質的変数を含んでおり、LabelEncoderを使用して数値データに変換させて使用していた。データの抜き出し方によっては LabelEncoder の結果が変わってしまうという事を紹介したい。
\#ちょっと考えれば当たり前のことであるが、自分がミスをしそうになったので、備忘録も兼ねて記事にしておく。

# 扱うデータセット
例えばRUN, STOP, NORMAL の三つの状態がある、以下のようなデータセットを考える。

“`python
import numpy as np

data = np.array([“RUN”, “RUN”, “RUN”, “STOP”, “NORMAL”, “STOP”, “STOP”, “STOP”])
“`

これを全データでラベルエンコーダを適応すると、

“`python
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
encoded_data = le.fit_transf

元記事を表示

代入式を使って CRC32 を一つの lambda 式にする (Python 3.8 以降)

Python 3.8 から代入式 `”:=”` が使えるようなので、CRC32 を一つの lambda 式にしてみます。

“`python:Python3.8
crc32 = lambda data, P=0xedb88320, v=0xffffffff: 0xffffffff ^ [v := ((v ^ (0 if b else d)) >> 1) ^ (((v ^ (0 if b else d)) & 1) and P) for d in data for b in range(8)][-1]
“`

この式は、入力ビット数(入力バイト数の 8 倍)の配列を一度作っています。

zlib の crc32 と一致するか確認します。

“`python:test.py
#!/usr/bin/env python3.8

import zlib

crc32 = lambda data, P=0xedb88320, v=0xffffffff: 0xffffffff ^ [v := ((v ^ (0 if b else d)) >> 1) ^ (((v ^ (0 if b else

元記事を表示

MAX30102で心拍数と血中酸素濃度を測定する – Raspberry Pi編 –

## 概要
* 新型コロナの影響でヘルスケア関連のデバイスの需要が高まっている
* maxim integrated社から出ているMAX3010xシリーズの最新版を試してみた
* まず開発キット(MAXREFDES117)を入手し、動作を確かめてみる

開発キット(MAXREFDES117)
![ios__________-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/47e08282-c0a9-6fcb-b472-05e31026e5b1.jpeg)
![ios__________.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/19bff5b3-7b44-471a-962a-2af3d962e7a9.jpeg)

## 用意するもの
* Raspberry Pi4 (3でもおそらく大丈夫)
* Raspberry Pi用のケース
* Raspberry Pi用のヒートシンク
* Rasp

元記事を表示

【機械学習】W&Bでパラメータサーチ【GridSearch】

# wandbとは

wandbそのものの始め方などは[過去の記事](https://qiita.com/daikiclimate/items/96bd784170582651651b)を見てくださるとありがたいです。簡単に言うと、実験結果やログをWeb上に保存することができます。結果を保存したり可視化したりしなくても、web上で確認できるので便利です。

以前は、パラメータサーチをwandbでするドキュメントが少なさ過ぎてちょっと無理って状態だったんですが、いつのまにか充実してたので簡単に記事にします。

# 簡単に自分のパラメータサーチの結果
結果のtableの真ん中にあるsweepのzvpkx0spというsweep idをクリックするとsweep結果をまとめたページを見れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404462/5cfbf38e-c2ca-6766-ae1e-c6732a064762.png)

どのパラメータが精度(自由に設定可能)に影響しているかが勝

元記事を表示

JavaユーザーがPythonを使って印象的だった点

# はじめに
最近Pythonを用いてLambdaを開発する機会がありました。今までJavaを中心に開発してきた自分にとっては新鮮な経験で、Javaと違ってPythonだとこのように書く・書けるのかと感じたところがありました。

今回はJavaを中心に使用している開発者目線でPythonに触れて印象的だった点を書いてみようと思います。

ちなみにPythonのバージョンは3.8です。

## クラスとメソッド、アクセス制限
オブジェクト指向に慣れるとクラスにデータとメソッドをカプセル化したくなります。

例えばJavaの場合だと

“`Java:PersonName.java

public class PersonName {
private String firstName;
private String lastName;

public PersonName(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}

元記事を表示

言語処理100本ノック(2020)-50: データの入手・整形

[言語処理100本ノック 2020 (Rev2)](https://nlp100.github.io/ja/)の[「第6章: 機械学習」](https://nlp100.github.io/ja/ch06.html)の[50本目「データの入手・整形」](https://nlp100.github.io/ja/ch06.html#50-%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%85%A5%E6%89%8B%E6%95%B4%E5%BD%A2)記録です。
多分[「第6章: 機械学習」](https://nlp100.github.io/ja/ch06.html)は51以降をやりませんが、[「第8章: ニューラルネット」](https://nlp100.github.io/ja/ch08.html)をやりたかったため、前提となるこのノックに取り組みました。カンニングもしているので、コーディング自体は30分程度で終わっていますが、久々に100本ノック関連の記事書いたり、Google Colaboratory やGitHubを久々に使ったりとしていたら3時

元記事を表示

Keras、cv2、PILの画像水増しの比較

## 画像の水増しをしたい…!

ディープラーニングをやっていると画像分類をしたくなる時が来る。
そんな時、圧倒的に足りなくなるのが画像データだと思う。

賢明な皆さんは画像の水増しに思い当っているはずなので、それぞれのライブラリの比較を行う。

#### 前提条件
– 元の画像はjpg形式とする。
– 画像編集としてではなく、あくまでディープラーニングを目的とした、大規模なデータセットの作成を目的とする。

### 前準備
“`python:main.py
import os

path = os.getcwd()
input_dir = os.path.join(path,”images”) # 画像があるディレクトリ
output_dir = os.path.join(path,”Data_augmentation”) # 保存先ディレクトリ

# ディレクトリ作成
if os.path.isdir(input_dir) is False:
os.mkdir(input_dir)
if os.path.isdir(output_dir) is False:
os.mkd

元記事を表示

GoogleColaboratoryでMeCabとmecab-ipadic-NEologdを使う

# この記事の内容
GoogleColaboratoryのnotebookで以下を行う
・MeCabをインストールして使う(No module named ‘MeCab’への対応)
・mecab-ipadic-NEologd をインストールして使う

# MeCabをインストールして使う
MeCabとは
 オープンソースの日本語形態素解析エンジン。
 http://taku910.github.io/mecab/
GoogleColaboratoryでMeCab(テキストの形態素解析をするライブラリ)をインストールして
いざMeCabを使おう(import MeCabしよう)とすると、
ない(No module named ‘MeCab’)となる。
これは、ライブラリがインストールされた場所が、pythonがライブラリを探しにいく先に含まれていないことから起きている。
この場合は、ライブラリをインストールした場所をsys.pathに追加すればよい。
※これは他のライブラリでno moduleになった場合についてもいえる。

・まずMeCabをインストール
!apt install ap

元記事を表示

堕落したYoutubeのアルゴリズムを自動で再教育する

私の周りにYoutubeに表示される動画がどんどん堕落していって困っている人がいます。私も頭が堕落しているので放っておくと勉強のために見ているYoutubeがどんどん娯楽専用になってきてしまいます。Youtubeには良質な教育コンテンツがたくさんあるのに、それを見られるかもしれなかった時間がエンターテインメントに消費されるのはもったいないことだと思います。これをなんとかしようと思います。

#結果

#ソース
pip install pyautogui

“`python:sensei.py

元記事を表示

BiLSTMとkerasを使った固有表現抽出

# はじめに
今回は、ディープラーニングの一種であるBiLSTM(双方向LSTM)と、それを活用するライブラリkerasを用いて固有表現抽出タスクを行います。
固有表現抽出とは、文章中からある種類を表す文字列を見つけるタスクです。
例えばレシピ文章から食材などの表現を抽出したり[(例)](https://techlife.cookpad.com/entry/2020/11/06/110000)、ニュース文章から会社名を見つけその会社の株式のトレンドを機械的に把握したりできます。

この記事では固有表現タスクとしてホテル名や旅館名を含ませた自動生成の文章からそれらを見つけ出すモデルを作ることにします。

「来週 パーク ハイアット東京予約」→

| | | | | | | |
| —- | ———- | ——– | ———- | ———- | —- | —- |
| 来週 | (スペース) | パーク | (ス

元記事を表示

How to load and call shared objects from Python

C言語で作った共有オブジェクトと連携してみる。

“`
$ cat greeting.c

char *
getMessage (void)
{
return “HELLO!”;
}
void
sayHowRU ()
{
printf (“Hi, how are you?\n”);
}
int
getSquare (int i)
{
return i * i;
}
int
multiplication (int a, int b)
{
return a * b;
}

$ gcc -c greeting.c && gcc -shared -o greeting.so greeting.o
$ ls -l *.so
-rwxr-xr-x 1 kishi kishi 10638 May 25 19:54 greeting.so

$ cat MyProto.py
#!/usr/bin/env python

import ctypes

myLib = ctypes.CDLL( ‘./greeting.so’ )

“””
— This is the case that

元記事を表示

Pythonで階層クラスタリングしデンドログラムを表示

# はじめに
クラスタリングといえば、kmeansが有名であるが、クラスタ数を事前に決めておく必要があることや、分割されたクラスタ間の関係が分かりにくいという欠点があげられる。

このデメリットを解消する手法として階層クラスタリングがある。この手法、scikit-learn には標準で搭載されていないと思い込んでいたのだがこの度あるということが分かった。その名もAgglomerativeClustering。早速使ってみたので紹介したい。

本記事では階層クラスタリングやデンドログラムの詳細については説明はしないので、詳しくは他のサイトを見てほしい。

# 環境
– scikit-learn 0.24.2

# まずはクラスタリング
まずは通常のクラスタリングを実施してみる。

### 必要モジュールのインポート

必要そうなモジュールを適当にインポート

“`python
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from scipy.cluster.hierarchy i

元記事を表示

MacでPython始めるときコマンドを覚えるのが面倒なのでメモする

“`zsh
% brew install python3

# プロジェクト用のディレクトリに移動するんやで
% python3 -m venv .venv

# activateするんやで
% pip install -U pip
% pip install jupyterlab
“`

## ついでにGPUサーバの設定する

※ここからはUbuntuです

### dockerインストールする

“`
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo “deb [arch=amd64 signed-by=/usr/share/keyrings/doc

元記事を表示

Pythonを使ってプログラミング授業の採点業務で楽しよう

#はじめに
これは私が学部生のプログラミングの授業における提出課題を採点する際に楽をしたく、作成した補助ツールです。
ディレクトリ構成や問題の形式など私自身の環境に合わせて作成していますので、そのまま使用できるというわけではないかと思います。

また、本記事のソースコードのご利用は自己責任でお願いいたします。
もし本記事のコードが原因でトラブルが発生しても私は一切責任を負いません。

##環境
Windows 10
Python3.8.8
gcc

##採点対象
前提として採点対象はC言語のソースコードで
ここでは例として問題が

“`
int型の変数 a, b に関して、a = 1, b = 2 のときの a + b の値を
a + b =
に続けて標準出力に出力せよ
“`
というものであるとします。
また採点対象のソースコードは

“`
.
├ 1234001いとうたろう ─ 1234001.c
├ 1234002さとうたろう ─ 1kai.c
├ 1234003すずきたろう ─ kadai1.c
├ 1234004たかはしたろう ─ 1234004.c
└ referen

元記事を表示

GPUを活用した機械学習ツールNVIDIA RAPIDSをArch Linux + CUDA11.4 でビルドした(Ver21.08版) (3) CUgraph

# やったこと=RAPIDS のビルド
データ処理、機械学習のフレームワーク[RAPIDS](https://rapids.ai/)を [Arch Linux](https://www.archlinux.org/) でビルドした。ただし、ビルドまでにエライ手間がかかったので、皆さんへの共有も兼ねて
0. **基本構成その0** ・・・ Cupyのビルド方法については[こちらの記事](https://qiita.com/daisuzu_/items/971ff080bb8e16d7c815)で紹介してます。
1. **基本構成その1** ・・・ [こちら](https://qiita.com/daisuzu_/items/086c04e2e04a664e464b)。RMM, cuDFというRAPIDS の基本コンポーネントの一部のビルド手順。
2. **基本構成その2** ・・・ [こちら](https://qiita.com/daisuzu_/items/a17b6a394b2505603f08)。CUMLというRAPIDS の基本コンポーネントの一部のビルド手順。ついでに、c

元記事を表示

Pythonでオリジナルのドット絵エディタを作る(4) – ベクター出力機能の追加

#はじめに
[前回の記事](https://qiita.com/Hisan_twi/items/219eb88c535f9a6171bd)で作成したドット絵エディタに、描いたドット絵をベクター画像(SVG形式)で出力する機能を追加します。。
搭載する機能の仕様は以下の通りです。

– ドットの角ばった形状を保ったままの形で書き出す。
– 色別に複合パスとして書き出す。
– 同じ色が隣接したドットは連結した形状として扱う。
– 白のドットは透明色として扱う(パスとして書き出さない)。

事前にこの機能を実装するためのアルゴリズムを調べたところ、[DEFGHI1977さんのサイト](http://defghi1977.html.xdomain.jp/tech/dotrace/dotrace.htm)で公開されている『ドット絵SVG化スクリプト:dotrace.js』に行き着きました。node.jsのコードとアルゴリズムが公開されているので参考にしようと思いましたが、Javascriptに不慣れなこともありうまくPythonで記述することができませんでした。
そのため、SVG形式への変換は独

元記事を表示

DFS(幅優先探索)解説動画のコード ABC213 D

DFS解説動画で使用しているコードの内容です。

“`python:
# 再帰回数上限。再帰関数を使うときは必ず最初に書くこと
import sys
sys.setrecursionlimit(10**6)

# 入力の受け取り
N=int(input())

# 道の情報格納リスト
connect=[[] for i in range(N+1)]

# 道の情報受け取り
for i in range(N-1):
A,B=map(int, input().split())
connect[A].append(B)
connect[B].append(A)
# connect[2]=[1,4]ならば2と1,4がつながっている

# 小さい順に回るからソート
for i in range(N+1):
connect[i].sort()

# 答えの格納用リスト
ans=[]

# DFS(今いる町,前にいた町)
def DFS(now,pre):
# 今いる町

元記事を表示

OTHERカテゴリの最新記事