Python3関連のことを調べてみた2021年12月13日

Python3関連のことを調べてみた2021年12月13日

なぜNumbaを使うと高速になるのか調べてみた

この記事は、[HUIT アドベントカレンダー 2021](https://qiita.com/advent-calendar/2021/huit) の13日目の記事です。

処理系初心者が少し調べてみた程度なので、間違った点があればご指摘して頂けると幸いです。

## はじめに

[Pythonのforがなぜ遅いのか](https://qiita.com/karintou8710/items/eb81e5c97d698e729e03)を調べた記事を以前に書きました。
これによると、主にPythonの仮想マシンでコードの実行をしていることが遅い原因です。

この記事を書いた後に、具体的にPythonをどのように高速化するのかが気になってきました。

Pythonの高速化は

– PyPyやCythonを使って実行する
– Numbaで関数やループの最適化をする
– キャッシュや適切なアルゴリズムにする

などの方法が考えられます。

今回はNumbaがどうやって高速化しているのかが気になったので軽く調べてみました。

## Numbaとは

NumbaとはPython向けのJITコンパイ

元記事を表示

AOJトライに関する知識知見の記録共有:Volume0-0054

# タスク概要

Sum of Nth decimal places

https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0054

# コード実装例
TIPS

1. 例外処理含む評価パターンを追加
1. 小数値入力を考慮

“`Python
import pprint, sys, time

def core(arg, acc=True):
a, b, n = arg[:3]
if acc:
ret = []
else:
digits = str(a / b).split(“.”)[1][:n]
ret = [sum([int(i) for i in digits]), digits]
return ret

def app(*args):
ret = []
for arg in args:
s = []
for acc in [True, False]:
st

元記事を表示

steamlitをrunするためにどうやってwhlとC++(14以上)をインストールしたか

・whlファイルの読み込みエラー発生
 →cpを探すためのコードでエラー発生
  →pipのバージョンによって該当関数get_supported()の場所が違うことを別記事で発見
  ←いくつかの記事で見たPathを自分のPCでもないか探し、無事関数が見つかる。
 ←cpが分かりインストールすべきwhlファイルが分かる。
←whlファイルを無事実行できた。

・「Microsoft Visual C++ 14.0 is required」のエラー発生
 →エラーリンクからDevToolのみダウンロードするも同じエラー再度発生
  →VSをC++のセット(約10GB)でインストールし直す
←エラーが解消。

感想:エラー文ちゃんと読もう。

元記事を表示

毎朝VOICEROIDに天気を知らせてほしい

## はじめに

タイトル通りです。
天気予報を確認せずに外出して失敗した経験はありませんか?
私は何度もあります。
簡単でいいので毎朝、知らせてくれたらそんな悩みとはおさらばでしょう。

私はプログラミング初心者で、今回が初投稿となりますから少し見辛い点があると思います。ご容赦ください。

使用言語はpython3.9です。

## 天気予報を処理

### スクレイプ

今回は[https://tenki.jp/](tenki.jp)のページをスクレイプします。
このスクレイプするプログラムは[こちらの記事](https://kinformation.sakura.ne.jp/20170715-01)を一部改変して引用しています。
そちらのコードをコピペしたファイルscrape_weather.pyをimportします。

以下がそのコードです。

“`python:scrape_weather.py
import re
import requests
from bs4 import BeautifulSoup
import json

def main(ur

元記事を表示

複素多変量正規分布サンプラーの作成手順

複素多変量正規分布からの効率的なサンプリングに関して解説します。Cholesky 分解に基づくサンプリングですので、多変量正規分布に従うサンプリング手法としては標準的なものです。

# 複素多変量正規分布

複素 N 次元 複素多変量正規分布とは、標本空間 $ \mathbb{C}^N $ 上の確率分布であり、平均(複素 N 次元)μ と分散共分散行列 (複素 N × N 正定値 Hermite 行列)Σ により指定されます。

## 複素多変量正規分布の確率密度関数

確率密度関数は、

“`math
p(z \mid \mu, \Sigma) = \frac{1}{\pi^N |\Sigma|} \, e^{ – (z – \mu)^* \Sigma^{-1} (z – \mu)}
“`

で与えられます。
ここで、行列の右上肩の `*` は複素共役転置を表し、`| |` は行列の行列式を表しています。

## 複素多変量正規分布の回転対称性

複素多変量正規分布には回転対称性があります。例えば、平均 $0 \in \mathbb{C}^N$ の複素多変量正規分布に従う確率変数

元記事を表示

Pythonでsuper()の呼び出し時、selfは暗黙的に渡される

久しぶりにpython書いてるとよく間違えちゃうんのでメモ。

**python3 でsuper()を使う場合、第一引数としてselfは暗黙的に渡される。**

なので下記2例はどちらも同じ意味

“`python:super()で親クラスのメソッド呼び出す場合
class A(Base):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # self引数は不要
“`

“`python:super()を使わない場合
class B(Base):
def __init__(self, *args, **kwargs):
Base.__init__(self, *args, **kwargs)
“`

元記事を表示

Windowsでgcloud コマンド起動するとpythonのエラーになるとき

# 発生したこと
Windows 10 に Cloud SDK をインストールして `gcloud components update`を実行すると、Pythonのエラーが表示される。

“`
$ gcloud compnents update
ERROR: gcloud failed to load: module ‘collections’ has no attribute ‘Mapping’
gcloud_main = _import_gcloud_main()
import googlecloudsdk.gcloud_main
from googlecloudsdk.calliope import cli
from googlecloudsdk.calliope import actions
from googlecloudsdk.calliope import markdown
from googlecloudsdk.calliope import usage_text
from googlecloudsdk.call

元記事を表示

kivyMDチュートリアル其の肆什参乃弍 Behaviors – Elevation篇

ハロー、Qiita!いかがお過ごしでしょうか。

今年もあと3週間ほどとなりました。いやー、ほんとに1年て早いですね。
クリスマスソングが街で鳴り響く中、筆者は家でカタカタ記事を書こうとしています。
誰ですか?!うわーっとか言っているのは!やめてくださいッ!

まぁそんな馬鹿なことも言っておりますが、安定的に投稿出来るのも平和な象徴という
ことでしょうか(どういうこと)。ということで自分でも何言っているか分からなくなって
きたので、さっさと本題に入っていこうと思います。

今日はというと、先週Elevationをやっていて残りがあるので、それの続きとなります。
ということで、レッツラゴ。

## Elevation

### button with a rectangular elevation effect

投稿者すらどこまでやったっけ?となっていましたが、今一度振り返ってみます。
どこまでやっていたかというと、全然進んでいなくサイコロのようなものを表示をして
いて、その様子をキャプチャとして残していました。使用方法とサンプルコードが一緒に
なっていて、最初のサンプルコードがそれに

元記事を表示

importするライブラリと同じファイル名で実行してエラー

基本的なことでハマってしまったので、
備忘録として残します。

下記のthreading.pyというファイルを実行しようとして、エラーではまってしまいました。

“` threading.py
import threading
“`

エラー内容は下記のとおり

“`
AttributeError: partially initialized module ‘threading’ has no attribute ‘RLock’ (most likely due to a circular import)
“`

解決方法

ファイル名を変更

threading.py → threading_test.py

これだけでエラーが解消しました。

けっこうエラー文だけからは判断しずらいですよね….

元記事を表示

Googleスプレッドシートのタスクリストをslackへ通知

この記事は、[Supershipグループ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/supership)の12日目の記事になります。

去年は[Google Calendar APIを利用した便利ツールについての記事を作成しました](https://qiita.com/suzukitheseventh/items/58e29fba080f44630d5a)が今年は、Google Sheets APIを利用した便利ツールの記事にしようと思います。

# 目的
Googleスプレッドシートで作成したタスクリストをslackに通知する方法を記載します。
GASではなくPythonです。
「GASではなくPythonで色々いじりたい」という方向けに参考になれば良いなと思います。

# 前提環境
### 利用したもの
– Python3
– Googleスプレッドシート
– Google Sheets API
– Slack Incoming Webhook
– macのターミナル
– cront

元記事を表示

Python 1本うどんコードトランスパイラ (Rust nomの使い方)

[鈴鹿高専 Advent Calender 2021](https://qiita.com/advent-calendar/2021/snct) 12日目の記事です

Rustのパーサコンビネータを紹介したかっただけのはずなのに, どうしてこんなことに

## 1本うどんコードとは

ご本家様 [Qiita – ugis_prog/Python 1本うどんコード](https://qiita.com/ugis_prog/items/ec33a98bd2b5aa1b0f3e)

## 1本うどんコードトランスパイラとは

**1本ではない普通のPythonスクリプトを, 1本うどんに麺打ちします.**
コード全体とか仕様は[github – niuez/UDON\_generator](https://github.com/niuez/UDON_generator)にあります.

## Playground

[Playgroundあります](https://niuez.github.io/UDON_generator/) あそべ

## 環境

Rustを用いて実装. Pythonパ

元記事を表示

最大の区間和 Python3

https://paiza.jp/works/mondai/stack_queue/stack_queue__practice_step2

Python3の解答がなくて涙
何度も試行錯誤してやっと通過したので忘備録で残します

“`
N,X = map(int,input().split())
A = list(map(int,input().split()))

S = [0]
max_num = 0
max_i = 0

for i in range(0,N):
S.append(S[i] + A[i])

for i in range(0,N-X+1):
if max_num < S[X+i] - S[i]: max_num = S[X+i] - S[i] max_i = i print(max_num,A[max_i]) ```

元記事を表示

自分の全ツイートをいいね数の多い順に並べたい!

「Twitter ツイート いいね 多い順 並べる」でググっても良いやり方が出てこなかったので自分でやってみました。

# 自分の全ツイートをダウンロード
まずは[こちら](https://help.twitter.com/ja/managing-your-account/how-to-download-your-twitter-archive)を参考に自分の全ツイートをダウンロードします。

# Pythonコードを実行
以下のPythonコードをダウンロードしたアーカイブデータのdataディレクトリ内に配置して実行します。
Twitterのアカウント名、アーカイブデータディレクトリのパスは自分のものに変更してください。

自分の実行環境は以下です。

– Mac OS 10.15.7
– Python 3.9.1

“` Python:tweet_log.py
import json
from dateutil.parser import parse
from pytz import timezone
import codecs
import subprocess

# Twit

元記事を表示

ローカル環境のJupyterLabからAthenaにクエリしたい

自分が初めてPythonを触った時、Jupyter Notebookには大変お世話になりました。

そんな感謝の一方で、AWS re:Invent 2021では[SageMaker Studio Lab](https://www.publickey1.jp/blog/21/awsjupyterlab_idesagemaker_studio_labaws_reinvent_2021.html)が発表されてJupyter環境がまた注目されているなーというにわか心もあったので、JupyterLabの使い方を考えてみました。

機械学習しなくても、手元でJupyterLabを使い始めることが目的です。

## 前提
– Assume RoleかつMFAを設定したIAMユーザ情報を`~/.aws/**`に保存
– Athena実行に足りるIAMロール権限を持っていること
– 参考: [Amazon Athena でクエリを実行したとき「Access Denied (アクセスが拒否されました) 」というエラーが表示される理由](https://aws.amazon.com/jp/p

元記事を表示

【覚書】Pythonのバージョン管理について

# はじめに
今回は、Pythonで躓きやすいバージョン管理について、覚書を兼ねて解説(?)します。
使いやすい方法は人によって変わってくると思いますので、いろいろな方法を試していただければと思います。

Pythonでは、複数バージョンをインストールして、切り替えながら使うということが少し複雑になっています。メジャーバージョン(2系・3系)同士では動くのですが、マイナーバージョンを複数インストールすると思ったように動かないことが多々あります。そんなときに、使える方法をご紹介します。

なお、[こちら](https://wisteria-yt.blogspot.com/2021/08/python.html “Pythonのバージョン管理について(覚え書き)”)のリメイク版となります。

# 方法
ここからはWindowsとmacOSに分けてそれぞれのおすすめの方法をご紹介します。Windowsの方は[こちら](#pythonランチャー–venv-windows)、macOSの方は[こちら](#pyenv–venv-macos)からご覧ください。

## Pythonランチャー ×

元記事を表示

WSL(Ubuntu 20.04.3 LTS)で、MeCab を Install して Python3系で動作させる

#経緯
形態素解析で利用する MeCab をそのまま“`pipenv install mecab-python3“`としても、Install できなかったので忘備録です。

# 環境

– OS: Windows10(WSL: Ubuntu 20.04.3 LTS)
– Python: 3.10.0
– pipenv: 2021.5.29

# MeCab に必要な Package を Install する
下記の Package が、MeCab が動作するのに必要で、こちらを Install しないと “`pipenv install mecab-python3“`としても Error が発生して Install できませんでした。

“`bash
$ sudo apt update
$ sudo apt install mecab mecab-ipadic-utf8 libmecab-dev swig
“`

# MeCab を Install する
“`bash
$ pipenv install mecab-python3
“`

無事に Install され P

元記事を表示

GoogleColaboratoryでOpenAI「GPT-3」の始め方(2021年12月現在)

#はじめに
OpenAIが開発している言語モデル**「GPT-3」**のAPIを用いると、自分でGPT-3を用いたプログラムが使えます。ただ、**どのように使用するのか**、そもそも**APIキーがどこにある**のか迷ってしまったため共有したいと思います。
**※注意点**
この情報は**2021年12月現在**のものです。今後、**変わる可能性がある**のでお気を付けください。

#開発環境
Google Colaboratory

#手順
**①「GPT-3 API」と検索→公式サイトに入る**
![OpenAI ホーム.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1925070/74aa8e60-07e9-30c1-7e76-478145924093.png)

**②SIGN UPをしてアカウントを作る**
![openai アカウント.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1925070/96df92

元記事を表示

GPT-3をGoogle Colaboratoryで実行した時の”No API key provided”の対処法

#はじめに
OpenAIが開発している言語モデル**「GPT-3」**をGoogle Colaboratoryで実行するとエラーが出ました。その解決法が分かったので共有します。
#どんなエラー?
Open AIが公開しているサンプルコードは以下です。

“`
import os
import openai

openai.api_key = os.getenv(“あなたのAPIキー”)

response = openai.Completion.create(
engine=”davinci”,
prompt=”I’m happy.”, #どの文章から始めるか
temperature=0.7,
max_tokens=64,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
“`
しかし、これをGoogle Colaboratoryで実行すると以下のようなエラーが出ました。

“`
AuthenticationError: No API key provided. You can set your A

元記事を表示

【備忘録】youtube-dlの使い方(まとめ)

# はじめに
youtube-dlの使い方を忘れてしまうので自分用の備忘録も兼ねて残しておきます。
本記事では、pipを用いてyoutube-dlをインストールし、YouTubeの動画をダウンロードする方法をご紹介します。
なお、[こちら](https://wisteria-yt.blogspot.com/2021/03/youtube-dl.html “youtube-dlの使い方”
)のリメイク版です。また、初投稿なので温かい目で読んでいただけると幸いです。

#環境

Python 3.3以上
venvを使うため

venvの使い方・youtube-dlのインストールは下で解説します。

# 使い方(結論)
“`zsh
#作業ディレクトリに移動
python3 -m venv env #venvで仮想環境(env)の作成
. env/bin/activate #仮想環境(env)の有効化
pip install youtube-dl #youtube-dlのインストール

youtube-dl -f mp4/best

元記事を表示

Julia, C++, Pythonの実行速度を比較してみました。(2021年版)

https://qiita.com/m_yamaguchi116/items/984977529cf72be019f2
を受けて投稿します。

コメントだと反応が薄いので。

# 環境

macOS Monterey
バージョン 12.0.1
Mac mini(M1, 2020)
チップ Apple M1
メモリ 8 GB

# Python の場合
まずは,Python です。M1 チップ対応です。
Python 3.10.0 (v3.10.0:b494f5935c, Oct 4 2021, 14:59:19) [Clang 12.0.5 (clang-1205.0.22.11)] on darwin

ターミナルから起動して,総実行時間を計測しました。
なお,元のプログラムでは for m in range(0, 11): とありましたが,他の言語では 0 〜 9 までなので,for m in range(0, 10): に修正しました。

“`Python
foo [5] > cat pi.py
limit = 10
for m in range(0, 10):
n

元記事を表示

OTHERカテゴリの最新記事