Python関連のことを調べてみた2022年09月24日

Python関連のことを調べてみた2022年09月24日
目次

Pythonのバージョン確認 for macOS

Pythonの環境構築のため

macにあるPythonのバージョンを確認

macOS 10.14

ターミナルappで
`$ python –version`
結果
`Python 2.7.16`

IDEには3.10.6とあるため
ターミナルappで
`$ python3 –version`
結果
`Python 3.10.6`

と確認。
単純にPythonとだけいれるのでなく、バージョンの番号をつけてコマンド実施が必要と認識。

元記事を表示

OpenAIの音声認識Whisperがすごいので,Google Colabで試してみた(Webアプリを作ってデモ編)

# はじめに
前回の記事を見てくださった方、そしていいね・ストックをしてくださった方々、ありがとうございます!
まさか1日で1000viewsを超えるとは思っていなかったので、とても嬉しいです!?
今回の記事は前回の続きとなりますので、まだご覧になっていない方は、ぜひ前回の記事も見てください!

## 前回の記事
https://qiita.com/walnut-pro/items/0124a5a0c83c9b4e2669

## Whisperについて
2022/09/22にOpenAIが音声認識モデルWhisperを発表しました.Whisperは人間レベルのロバスト性と音声認識の精度を持ったニューラルネットワークであり,オープンソース化されているので誰でも利用可能です!
[参考文献]
公式サイト:https://open

元記事を表示

Python(Django)でSNSアプリケーションの開発Part2~ユーザー認証機能~

[前回の記事](https://qiita.com/Taku_nakahara/items/50ee5d98a7e86fcd8475)では初期設定とサイトの全体像について紹介しました。
今回はユーザー認証機能について解説します。

ユーザー認証機能とは

ユーザー認証機能とは「サインアップ」「ログイン」「ログアウト」「パスワードリセット」などユーザーに関する機能です。
システムに登録しているユーザーを識別したり、新たに登録するといった役割があります。

Djangoでユーザー認証機能を作成する

作成方法概要

[前回の記事]から勧められた方は以下のようなディレクトリ構成になっていると思います。

“`Python:ディレクトリ
app_sns/
├プロジェクト
├ manage.py
└ accounts(app_name)/
├ __init__.py
├ apps.py
├ models.py

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの数値計算の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの数値計算の比較

# Python

https://qiita.com/Sunset_Yuhi/items/fa6e97867ac46a604780

# Ruby

https://qiita.com/u651601f/items/52af880d1569c6c1066f

# PHP

https://qiita.com/mpyw/items/346c535ade9dcf6e1b12

# Java

https://qiita.com/takahirocook/items/748990882f2de7a630a1

# JavaScript

https://qiita.com/daikw/items/663bc0b5a4c025694974

# Perl

https://perlzemi.com/blog/20161

元記事を表示

AWS上にStreamlitの動作環境を作ってみた

## 概要
[**Streamlit**](https://streamlit.io/) という Python のWEBアプリケーションフレームワークを動かすための環境をAWS上に作ったのですが、とにかく詰まりに詰まったので覚えている範囲で記録を残しておこうと思います。誰かしらのお役に立てば幸いです。

ということでいってみましょう。

## EC2環境
– Amazon Linux 2
– Apache 2.4.54
– Python 3.7(Amazon Linux 2 に最初から入っていた)

## インフラ構成

大まかにはこんなかんじですが特に凝ったことはしていません。
アベイラビリティゾーンやパブリックサブネットは実際は複数ありますが、本筋にあまり関係ないのでここでは省略してます。

![streamlit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70638/8b447a25-f5a7-ad3e-9bf5-8e605cba711a.png)

唯一の注意点として、

[Python] 自動的にスクショを取るプログラムの作成レポ

**初投稿につき、コメントやSuggetion等ありましたら幸いです。**

# 1. 初めに
 毎時ごとにスクリーンショットを取る必要が出たため、Pythonの勉強を兼ねて簡単なコードを作成、その後三日ほど運用しました。

# 2. 使用したものとバージョン
 Windows 10 Home: 21H2
 VS Code: 1.71.0
 Python: 3.10.1, pip: 22.2.2
 ライブラリ
 schedule: 1.1.0
 PyAutoGUI: 0.9.53

導入に際しては `pip install schedule`, `pip install PyAutoGUI`としました。
 
# 3. 書いたコードと説明
 以下のコードを使用しました。
~~~python:AutoGetFig.py
import datetime # 現在時刻を取得するためのライブラリ
from time import sleep
import pyautogui # スクリーンショットを取るためのライブラリ
import schedule

Python(Django)でSNSアプリケーションの開発Part1 ~サイト全体像と環境構築~

今回はDjangoを利用してSNSサイトの構築を行っていきます。
前回の[ブログサイト構築](https://qiita.com/Taku_nakahara/items/48836032f18154437c0b)ではDjangoの基本機能であるMVTの仕組みやHTTPについてなどwebサイトの基礎的な部分で実装しました。
今回のSNSサイト構築では「ユーザー認証機能」や「送信フォームについて」などの少しレベルアップした内容となっています。

前提

SNSサイトに必要な機能

①サインアップ機能
②ログイン機能
③ログアウト機能
④パスワードリセット機能
⑤トップページ(ログイン/ログアウトで表示変更)
——————————以下ログイン後に使える機能———————————————————-
⑥タイムライン
⑦投稿の詳細
⑧投稿編集(ログインユーザー自らの記事)
⑨返信
⑩ユーザーごとの投稿一覧

開発環境/ツール

使用

connpassイベントの人気ランキングを閲覧できるサイトをstreamlitで実装してみた

connpassには有意義なイベントがたくさん開催されておりとても利用しています。
人気があるconnpassイベントの傾向が見れるサイトがあったらいいのにと思ったふしから
今回connpassAPIとstreamlitを用いてランキングがわかるサイトを作ってみました。

# streamlit

## streamlitとは

https://streamlit.io/

streamlitとはフロントエンドの技術(HTML・CSS・Javascript)を用いずにpythonだけでwebサイトを作成できるpythonフレームワークです。
Streamlitは、plotly、matplotlib、pandas、numpyのような様々なデータ処理、可視化ライブラリなどとの連携をサポートしているおり、webでデータを可視化することができます。

詳しくはこちらをごらんください

https://qiita.com/tamura__246/items/366b5581c03dd74f4508

## streamlit Cloudとは

streamlitで作成したwebアプリをホスティン

[python] 複雑なエクセルデータをpandasで処理する。

# はじめに
pandasはデータ処理の時によく用いられるが、測定機械が古くて得られるデータが古い形式のままである場合がある。
私の会社でも測定機械が20年以上と古いものが多く、データ処理には一工夫が必要である。
複雑そうに見えるデータを簡単にまとめることを目標とする。

# 環境
python 3.7.8
window 10

# データ
![スクリーンショット 2022-09-23 231901.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821152/ce6835ab-30c9-cc69-a390-b81ec053c80d.png)

エクセルは写真のような扱いにくい配置でデータが書き込みされる
必要なデータはMA, MB, MC, MD, MEの下の行の値
それ以外は不必要であるが、データの数や順番は必要な情報である。
今回は5個のサンプルに対するデータがあるが、その数に決まりは存在しない。
もし測定サンプルが6個なら、それぞれのデータは1行ずつ、下にずれてしまう

# 条件
– エク

scikit-learnのCountVectorizerやTfidfVectorizerの日本語での使い方について

# はじめに

テキストデータを処理するには、文字列のままだと扱うのが難しいのでベクトル化ということを行います。テキストのベクトル化の有名な手法として、Bag of WordsやTF-IDFと言った手法があります。
それらの手法は機械学習ライブラリのscikit-learnでも実装されているのですが、日本語のテキストに対して使用するのに結構つまづきました。
この記事は、そのときの覚え書きになります。

# 日本語での使い方:結論

事前に文章を単語で区切ってリスト化しておき、`analyzer=lambda x: x` をパラメータに指定して、ベクトル化を行う。
(`CountVectorizer`を例にしているが `TfidfVectorizer` でも同様。)

“`py
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer

corpus = [
[‘これ’, ‘は’, ‘最初’, ‘の’, ‘ドキュメント’, ‘です’, ‘。’],
[‘この’, ‘ドキュ

とある関数のとある値まででグラフ描画する

グラフを作成するとき、とある関数のとある値までで描画を打ち切りたいことがあり、ちょっと考え込んでしまったのでメモを残します。

まず、とある指数関数のグラフを描いてみます。

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

def curve(x):
return np.exp(0.1*x)

x = np.linspace(0, 60)
y = curve(x)

fig, ax = plt.subplots()
ax.plot(x, y, ‘k’)
plt.show()
““
![fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492516/73dab1ff-d874-878e-b6e5-f7078d8de2f8.png)

途中から立ち上がりが鋭くなり、横軸xが60で縦軸yが400ちょっとまであります。これを、縦軸が200を超えたところで打ち切りたいとします。いろいろな方法がありそうですが、np.whe

【Python】有向グラフの最短経路に含まれる辺を列挙

辺の長さが1の有効グラフの最短経路に含まれる辺を列挙する方法メモ
最短経路が複数存在する場合は、そのうちの1つを出力する

“`python
from collections import deque,defaultdict
# 頂点数:n
# 辺の数:m
n,m=map(int,input().split())
edge=defaultdict(list)
for i in range(m):
# 0-indexにする
s,t=map(lambda x:int(x)-1,input().split())
# 遷移先の頂点と辺のindexを追加する
edge[s].append((t,i))

INF=float(‘inf’)
# 頂点0からの距離
dist=[]
# ひとつ前の頂点と辺のindex
back=[(-1,-1)]*n

def bfs(s):
global dist,back
dist=[INF]*n
dist[s]=0

q=deque()
q.appendleft(s)
while l

pythonの”関数”でも、”関数”を引数として指定できる

#### pythonの”関数”でも、”関数”を引数として指定できる
例として、下記の関数を微分してやりたいとします。
“`
def f_ex(x):
return 2*x
“`
例えば、関数に”関数”を引数として指定しない場合、下のように書けますが、取り回しが非常に悪いです。
“`
def diff_ex(x):
h = 1e-4
return (2*(x+h)-2*(x-h))/(2*h)
“`
実行例
“`
>>> diff_ex(8)
1.9999999999953388
“`
そこで、関数に”関数”を引数として指定してやることで、簡単に処理を使い回すことができます。
代入したい関数の引数記述部()を省略してやることで、関数に”関数”を引数として指定できます。
例えば、下記のように、好きな関数を引数として指定し、微分する関数を作ることができます。
“`
def diff_f(f, x):
h = 1e-4
return (f(x+h)-f(x-h))/(2*h)
“`
実行例
“`
>>> diff_f(f_ex,

ビットボード(Bitboard)を使い、並行して最短経路を探索する

ビットボードと戯れていたらふと思いついたので記事を書いてみました。
内容に誤りがあったらコメントで教えて貰えると助かります。

# 最初に

高速化なのになんでPythonなの?→Pythonしか使えないからです。

ビットボードって何?→ビットボードはすごいやつです。
 わかりやすい記事→[ビットボードの凄さをざっくりと解説してみる](https://qiita.com/YSRKEN/items/29829c7f5beae7900f36 “”)

A*探索アルゴリズムでよくない?→よいです。ロマンです。

記事わかりづらいんだけど→申し訳ないです。

変数名の付け方癖強くない?→真心を込めて名付けています。

## ビットボードによる経路探索のメリット
+ 複数の経路を同時進行で計算できる
+ 容量に優しいかもしれない
+ 速い!
+ スタート地点やゴール地点を複数設置できる
## デメリット
+ コードの可読性が下がる

# 実装
## 入力
“`Python:main.py
example_map = ”’
########
#..#.#.#
#S.#…#
##…#.

これでマスター数学的考察編〜AtCoderを戦うために典型問題を徹底マスターしよう![競プロ解説]〜

# はじめに

初めまして。
普段AtCoderにPythonで参戦しているハチです。

今回は、数学的考察について初心者でも一から分かりやすく解説していきたいと思います。

実は僕自身、AtCoder歴は現時点で2ヶ月ほどで、まだまだ初心者です。ですが、初心者だからこそ分かる苦悩や引っ掛かりポイントがあると思います。

そこで、自分と同じようにAtCoder初心者でもこれを読めば「**数学的考察**」について理解できるような記事を書けたらと思います。

また、今回の記事と同じシリーズには以下のような記事もあるので、ぜひ興味があったら読んでみてください。

[これでマスターbit全探索編](https://qiita.com/oyutaka_jp/items/822cafd0f8e6f1c59999)
[これでマスター二分探索編](https://qiita.com/oyutaka_jp/items/e8f836903f87a5f3bead)

# 目次

1. [数学的考察とは](https://qiita.com/oyutaka_jp/items/2ee64699320a9d761

【商用利用OK】ジェネラティブアートのパーツ組み合わせPythonスクリプトを紹介します

ジェネラティブアートは、プログラムを活用したアート作品です。最近話題のNFTアートの世界でも注目されています。ジェネラティブアートの組み合わせの仕組みから、ジェネラティブアート作成手順、作成に利用されているPythonコードのロジックを解説します。

## ジェネラティブアートとは
ジェネラティブアートは、プログラムを用いて作成されるアート作品のことです。ジェネレーティブアートとも呼ばれることもあります。何もないセロからすべてをプログラムによって生成するアート作品を指す場合もあれば、制作過程の一部にプログラム利用するアート作品を指す場合もあります。この点は文脈から判断してください。

本記事では後者の、制作過程の一部でプログラム利用するアート作品を「ジェネラティブアート」として解説します。

## NFTで人気のジェネラティブアート
近年NFTというキーワードをよく耳にしますが、NFTアートの分野でもジェネラティブアートが数多く存在します。共通の構図を持ちながら、デザインや色を少しづつ変化させた作品をプログラムで大量生成し、数千種類・数万種類のアート作品群が売買されています。ここでは、

MATLAB – Python 連携: DataFrame 変数を Table 変数に変換

# 直接 *DataFrame* を *Table* 変数に変換したい
近年、MATLAB のヴァージョンが上がる毎に Python との連携が強化されつつあります。
従来は、*Parquet* や *csv* ファイルに保存してから再度読み込む方法などが推奨されていましたが、ファイルに保存なんて野暮ったい感じもするので、直接受け渡しができる方法をご紹介します。
*DataFrame* を *Table* に変換して、MATLAB のデータ解析環境で直ぐに使う方法を備忘録的に記しておきます。

:::note alert
注意
この記事は、MATLAB から Python を呼び出す場合を想定しています。
Python から MATLAB を呼び出す方法は、[Call MATLAB Functions from Python](https://www.mathworks.com/help/matlab/matlab_external/call-matlab-functions-from-python.html) などを参照してください。
:::

# 0. 基本設定の確認
利用する M

依存性のある複数引数を一時変数無しで設定する

※以下のプログラムはPython 2.7/3.9およびRuby 2.7でそのまま貼り付けて動作することを確認しています。

## 背景

ライブラリの挙動により、このようなことをしたいことがあると思います。

“`py
process(config=json.load(open(fname)),data=get_data(config))
“`

“`rb
process(config: JSON.parse(open(fname).read), data: get_data(config))
“`

しかし、前側のパラメータに与えられる情報を後ろのパラメータで使うことはできません。

## 解決策

※以下、サンプルなのでconfig/dataという名前になっていますが、実際にはこの辺りはちゃんとした名前をつけてください

### 一時変数

こういう場合、通常はkwargs変数を用意して処理するのだと思います。

#### Python

“`py
def process(**kwargs): # actually defined in another module

Python基礎 リスト、タプル、セット、ディクショナリ

## リスト
### append() リスト末尾に要素を追加する
“`
>>> example = [1,2,3]
>>> example.append(4)
>>> example
[1, 2, 3, 4]
“`
### extend() リストにリストを追加する
“`
>>> animal = [‘elefant’, ‘giraffe’, [‘cat’, ‘dog’]]
>>> sea_animal = [‘octopus’, ‘dolphin’]
>>> animal.extend(sea_animal)
>>> animal
[‘elefant’, ‘giraffe’, [‘cat’, ‘dog’], ‘octopus’, ‘dolphin’]
“`
### insert() リスト内の特定のインデックスに要素を追加できる
“`
>>> animal.insert(2, ‘lion’)
>>> animal
[‘elefant’, ‘giraffe’, ‘lion’, [‘cat’, ‘dog’], ‘octopus’, ‘dolphin’]
“`
### rem

AWSに特化したChaliceフレームワークを触ってみた

今回とあるプロジェクトでChaliceのフレームワークを使うことになり、その導入資料を作成したので、記事として残そうと思います。

## Chaliceとは

Chaliceは、Amazon製であるため、AWS専用のフレームワークとなっています。

– デプロイ周りを簡単にかつ自動で構築できるため、コードを書くことに集中できる
– Flask、bottle、FastAPIなどのフレームワークで使用されているおなじみのデコレーターベースの構文を使用しているため、学習コストが低い
– さまざまなデプロイツールに対応しているため、自分が慣れ親しんだデプロイツールを利用できる(TerraformやAWS SDKなど)

公式ドキュメントではデプロイまでの時間が早いことを示すため、ターミナルでの実行時間を見れるようにしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255267/d136591d-69ad-bad7-eaad-236c842bb4f3.png)

とても自信がおありの