Python3関連のことを調べてみた

Python3関連のことを調べてみた

HuggingFaceの読込速度の比較(ローカル、urlモデル名、pickle)

# 概要
HuggingFaceのモデルのロード速度を3つの方法で比較しました。

* ローカルパス:model_nameにダウンロードしたものモデルフォルダのパス(e.g. “./mulitlingual-e5-large”)を指定してロード
* キャッシュ:model_nameにURLのモデル名(e.g. “intfloat/multilingual-e5-large”)を指定してキャッシュ済みのモデルをロードする
* pickle: pickleでダンプしたインスタンスをロード

結果としてはpickleが一番早かったです。ローカルパスとキャッシュは同じくらいでした。

# 背景
HuggingFaceのモデルをなるべく早くロードできる方法が何か知りたくて調べました。
# 環境
* M1 MacBookAirのメモリ16GB、SSD 1TB

# 実装
`intfloat/multilingual-e5-large`の読込み速度を比較します。2GB以上あるので、より軽量なモデルで試したい場合は適宜、変更ください。

## ローカルパス
huggingface_hubを使ってモデル

元記事を表示

PHPとPythonの比較勉強ー複数行にわたる入力 (paizaランク D 相当)

https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_std_in_out_step3

PHPを仕事であんまり使わなくなって今Pythonをやっているんですよね。
で、やらなくなっているとなんというか腕が鈍ってしまったりしまして。
それだとだめだなと思ったので今年から1日1回はPHPも解くようにしました。

ひとまずPythonで書いてみます

“`py

n = int(input())
for _ in range(n):
print(input())
“`
簡単ですね。
では次にPHP

“`php

“`
一応正解はしたのですが。
fgets(STDIN)で取得したものはtrimしないといけないみたいです。
なんでなのか調べたら、どうやら、入力されたときの改行を除去するため、という
意味があるそうです。
問題

元記事を表示

2023年のQiita人気タグをアニメーションで振り返る

## 結果から
![output (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602537/4d013a9e-6272-b2de-0e91-04cbb410e77b.gif)

## はじめに
つい先週に、ワードクラウドの時系列変化をアニメーション化する[AnimatedWordCloud](https://github.com/konbraphat51/AnimatedWordCloud)というライブラリが出ました

https://github.com/konbraphat51/AnimatedWordCloud

こちらも読むべき: [【Python OSSライブラリ製作】話題の時系列変化を可視化する”アニメ化”ワードクラウドを作成するライブラリをリリースした](https://qiita.com/konbraphat51/items/1d72404203e4c63d8cda)

[ミーハーの王、ミーハーキング](https://qiita.com/uts1_6/items/11e34

元記事を表示

【Python OSSライブラリ製作】話題の時系列変化を可視化する”アニメ化”ワードクラウドを作成するライブラリをリリースした

## 作ったもの
イーロンマスクのツイートにおける頻出単語の時系列変化を可視化したgif画像です。
![image.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602537/cc0b3710-904e-9d3c-b39f-ad7b93fad66a.gif)

“`
pip install AnimatedWordCloudTimelapse
“`

でインストールして、

“`python
from AnimatedWordCloud import animate

animate(data)
“`

と記述するだけで、上記のgif画像が作成できる`Python`ライブラリ[AnimatedWordCloud](https://github.com/konbraphat51/AnimatedWordCloud)を作成しました。

:::note
`GitHub`レポジトリ(スター⭐くれると泣きながら喜びます、本当に):https://github.com/konbraphat51/Anima

元記事を表示

九九の一覧表作成

九九の一覧表を作りました。

ルール
①各段の最後の回答以外、「 | 」で区切る
②回答はスペース埋めで2桁にする
③各段の区切りを「=」で各行の文字数に合わせる

実装したコードです。

“`python3
#####################################
### 九九の一覧表作成
#####################################

#各段の変数定義
startn = 1
endn = 10
#桁数変数の定義
keta = 2
# スペース関数
def space1():
print()

# 罫線関数
def div1():
print(“=” * (keta*(endn – startn) + 3 * (endn – startn -1)))

for i in range(startn,endn):
for j in range(startn,endn):
ans = i * j
if j == 9:
print(f”{ans:>{keta}}”,end=””)
els

元記事を表示

[Python][Julia]Project euler10 (プロジェクトオイラー10)

#### Project euler Ploblem 7 (プロジェクトオイラー7)
[Summation of Primes](https://projecteuler.net/problem=10)

備忘のために残しておく。

## 問題
#### 問題文 (意訳)
10より下の素数の和は 2 + 3 + 5 + 7 = 17。
2,000,000より下の全ての素数の和を求めよ。

#### 原文
The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.
Find the sum of all the primes below two million.

## 解答
#### 答え
142913828922

#### 解答の方針
エラトステネスのふるいを使って素数のリストを作成し、合計する。
[[Python][Julia]Project euler7 (プロジェクトオイラー7)](https://qiita.com/fujihop/items/776d1135d52944529941)
のコードを参考に改変し

元記事を表示

pandas.DataFrameのループ速度比較(iterrows vs apply)

# 概要
pandas.DataFrameで行ごとの処理をする場合の、iterrowsとapplyの速度比較を行ったコードのメモです。iterrowsのほうが遅いという話はよく聞きますが、実際どの程度遅いのか、実感を掴むためにやりました。新規性は特にありません。

# 実装
wikipediaの記事を文単位で分割して新たなDataFrameをつくるというタスクで計測します。
列名の変更など一部無駄な処理があるのは、他のプロジェクトのためのコードを流用しているためです。
コードはGPT4の力を借りて作りました。

wikipediaの記事をhuggingfaceからダウンロードします。

“`Python
from datasets import load_dataset

# URL of the dataset
dataset_url = “izumi-lab/wikipedia-ja-20230720”

# Load the dataset
dataset = load_dataset(dataset_url)

# To view basic information or m

元記事を表示

pythonのECDSA署名鍵読み込みが意外と雑だった

# はじめに

いきなりですが, [ECDSA](https://ja.wikipedia.org/wiki/%E6%A5%95%E5%86%86%E6%9B%B2%E7%B7%9ADSA) という楕円曲線を使った署名技術が存在します[^2]. そして,

“`
$ python3 pip install ecdsa
“`

で導入されるライブラリを使うと, pythonでECDSAの鍵生成や署名をはじめとして, DER/PEM形式での鍵のインポートやエクスポートも可能となります.

今回いろいろあってこのあたりの構造を調べていたら, タイトルの通り署名鍵インポートが適当だったことが判明したので, 自分への備忘録も兼ねてこれを記している次第です.

なお, はじめに断っておくとこれはバグではなく, ただ単に(それを承知の上で)実装されていないだけです.

# 環境
“`
$ python3 –version
Python 3.10.12

$ python3 -m pip list | grep ecdsa
ecdsa

元記事を表示

数値のスペース埋め(入力でデータの数とスペースで何桁の数にするか指定する)

***数値のスペース埋め***(入力でデータの数とスペースで何桁の数にするか指定する)
のプログラミング課題を解きました。

“`Python3
#入力するデータ数とスペース埋めで何桁で出力するか入力する
data1 = input(“数値のデータの数とスペース埋めで何桁の数に指定するかスペース区切りで入力してください”)
array1 = data1.split(‘ ‘)
N = int(array1[0])
keta = int(array1[1])
for i in range(0,N):
num = input()
ans = “{: >{}}”.format(num,keta)
print(ans)
“`

元記事を表示

[Python][Julia]Project euler9 (プロジェクトオイラー9)

#### Project euler Ploblem 9 (プロジェクトオイラー9)
[Special Pythagorean Triplet](https://projecteuler.net/problem=9)

備忘のために残しておく。

## 問題
#### 問題文 (意訳)
ピタゴラスの三つ組数は 3つの自然数のセットであり、a

元記事を表示

Python3: SMTP over SSL でメールの送信

こちらのプログラムを改造しました。
[Python3: Starttls でメールの送信](https://qiita.com/ekzemplaro/items/c248b52a6f36947af080)

“`py:mail_send.py
#! /usr/bin/python
#
# mail_send.py
#
# Jan/08/2024
# ——————————————————————–
import os
import sys
import socket
from dotenv import load_dotenv
import email
from email.mime.text import MIMEText
from email.utils import formatdate
# ——————————————————————–
from send_smtp_ssl import

元記事を表示

異様な書き方でプログラミング

異様な書き方でコラッツの問題を解くプログラムを書いてみる。

– `式1 if 条件 else 式2` 構文を使う。
– `式1`,`式2`は複数の式から構成されてもよい。ただし,
– 全体を `( )` で囲む
– それぞれの式は `,` で区切る
– 関数の引用も式である
– 代入文の場合はいわゆるセイウチ演算子 `:=` を使う
– 実行される複数の式の結果をタプルとしてセイウチ演算子で捕捉しておくこともできる

“`python
n = 976
oddcount, evencount = 0, 0
while n != 1:
(junk1 := (print(‘n =’, n, ‘is even. =>’, n//2), n := n//2, evencount := evencount + 1)) if n % 2 == 0 else (junk2 := (print(‘n =’, n, ‘is odd. =>’, n*3 + 1), n := n*3 + 1, oddcount := oddcount + 1))
prin

元記事を表示

最もよく起こりうることを先に判定せよ

“`Python
if condition:
continue
else:
something()
“`

の意味と,「最もよく起こりうることを先に判定せよ」というのは違うのではないか。
確かに以下のような場合には  `i < 0.8` を先に判定するほうが良いが,それとこれとは違う。 ```python #--- import numpy as np from time import time n = 100000000 x = np.random.rand(n) s = time() s1, s2, s3 = 0, 0, 0 for i in x: if i < 0.8: s1 += 1 elif i < 0.9: s2 += 1 else: s3 += 1 print(s1, s2, s3, time() - s) ``` 79997428 9999472 10003100 10.772604942321777 ```python s = ti

元記事を表示

[Python][Julia]Project euler8 (プロジェクトオイラー8)

#### Project euler Ploblem 8 (プロジェクトオイラー8)
[Largest Product in a Series](https://projecteuler.net/problem=8)

備忘のために残しておく。

## 問題
#### 問題文 (意訳)
1000個の数値がある、4個の隣り合う数値で最大の積は9×9×8×9=5832
13個の隣り合う数値の最大の積は?

#### 原文
The four adjacent digits in the 1000-digit number that have the greatest product are 9×9×8×9=5832.
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
125406987471585238630507156932909632

元記事を表示

【macOS】asdf+PoetryでPythonの開発環境を構築した

## 背景
先日、Anaconda3を使いたくなくなって、アンインストールした。
後に、asdfとPoetryでPythonの開発環境を再構築したので、メモを残しておく。

https://qiita.com/TIshow/items/2dbabe857343a79cf3b0

## やること

asdfとPoetryでPythonの開発環境を構築する

## 手順
– Poetryとは何か?
– asdfのインストール
– Python プラグインの追加
– Pythonのインストール
– Poetryのインストール
– 仮想環境の構築

## Poetryとは何か?
Poetryは、Pythonのパッケージ管理ツールである。Pythonには、pip や pipenv など、さまざまなパッケージ管理ツールが存在するが、Poetryもその一つ。
Poetryの目的は、パッケージの依存関係を簡単かつ効率的に管理することにある。

### Poetryの主な機能
Poetryは以下のような強力な機能を提供している・

– パッケージの管理:
Pythonプロジェクトに必要なライブラリやツ

元記事を表示

Python3のdequeの実装を調べる:

https://atcoder.jp/contests/abc335/tasks/abc335_c

この問題で、Pythonのdequeのindexed参照が$O(N)$なんだ!というポストをみかけました。Pythonのdequeの実装はどうなっているのでしょうか?以下はPython-3.8.10.tar.gzのコードから参照します。

# 冒頭のコメントを読む(日本語のみ)

– dequeの特徴はappendやpopにおいて操作するデータ以外の位置を移動させないことだ。加えて、(全体に対する)reallocを発生させない
– Pythonのdequeは固定ブロックサイズのダブルリンクドリストに格納される。これは一般のリンクドリストは1つの要素ごとにnxt/prvをもったりして非効率的だから。また、連続アクセスのキャッシュ局所性への対応も実現する。

# ダブルリンクドリストのイメージとdequeの構造体の実装
以下はイメージです。各要素は前後の要素へのポインタを持ちます。各要素は要素のデータを持ちます。
![image.png](https://qiita-image-store

元記事を表示

ラズパイで動体検知カメラを作った

## はじめに
python も ラズパイも全くの独学で、3年程経過しました。いろいろ作っているので紹介できればと思います。コーディングなどは他人に見せるには恥ずかしいレベルと思われますが、誰かの参考になればと。

## 目次
1. まずはWindows下で
1. ラズパイの準備
1. カメラの起動
1. LCD表示
1. 使用ハードウエアまとめ
1. おまけ

## まずはWindows下で
動体検知カメラと云うことで、Motionをラズパイにインストールしたが、動作が良く解らない。
解らないのでコマンドにてサービスを停止した。停止したはずなのに9KB程度のjpegを吐き出し続けているのを発見した。これは自分には対処不能と判断しアンインストール。
心機一転 全て自分で作ろう!
なるべく小さくまとめたかったのでヘッドレスラズパイ+ミニLCDという構成。
しかし、いきなりヘッドレスラズパイでのデバッグ作業は面倒だと思うので、まずは Windows の下でロジック確認。
ソースはこれ。
“`ruby:camchk.py
# -*- coding: utf-8 -*-
# パラメタ調整は差

元記事を表示

OpenCVを用いたエッジ検出

OpenCVを使用したエッジ検出は、画像のエッジや輪郭を識別するプロセスで、画像処理や画像認識の分野で広く利用されています。エッジ検出の一般的な手法には、Cannyエッジ検出、Sobelエッジ検出、Laplacianエッジ検出などがあります。本記事では、これらの方法を使った基本的なエッジ検出の例をいくつか紹介します。

必要なもの
Python: プログラミング言語として使用。
OpenCV: 画像処理を行うためのオープンソースライブラリ。
OpenCVをインストールしてください。
“`
pip install opencv-python
“`
## Cannyエッジ検出
Cannyエッジ検出は、画像のエッジを検出するための多段階アルゴリズムです。

“`
import cv2

# 画像を読み込む
img = cv2.imread(‘image.jpg’, 0)

# Cannyエッジ検出を適用
edges = cv2.Canny(img, 100, 200)

# 結果を表示
cv2.imshow(‘Canny Edge Detection’, edges)
cv2.wait

元記事を表示

スペース埋め

スペースで埋めて数字を3桁の文字列にするプログラムを実装しました

“`python3
# coding: utf-8
# 自分の得意な言語で
# Let’s チャレンジ!!
num = input()
# スペース埋め
ans = “{: >3}”.format(num)
print(ans)
“`

元記事を表示

Anaconda3をmacOSから完全にアンインストールした

## 背景

数年前までanacondaを使っていたが、新たにまたpythonを触る気になった。
そこで、Javascriptでは普段asdfを使っているので、asdf+Poetryでpython環境を0から作ってみようかなと思い、その際、これまで使っていたanacondaは綺麗に消そうと思った。

## やること
anacondaは正直Jupyter Notebookを使うために入れていたくらいの温度感なので、Anaconda3をホストマシンからアンインストールする。

## 手順
Step1: Anaconda3のホームディレクトリの確認
Step2: anaconda-cleanをインストール
Step3: anaconda-cleanをインストール
Step4: .anaconda_backupを削除
Step5: anacondaを削除!
Step6: パスとかの削除
Step7: ショートカットを削除する

## Anaconda3のホームディレクトリの確認
削除する前に、Anaconda3 がどこにインストールされているかを確認する。
独自にカスタマイズしていなければ、多

元記事を表示

OTHERカテゴリの最新記事