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

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

Raspberry Piでネットワーク帯域制御「tcconfig」のインストール方法

Pythonのpip ver 23.0からPEP668対応で従来のインストール方法では不具合がある様子です。
当方で動作した方法を紹介します。

# 動作環境
Raspberry Pi 4 (4GBモデル)

Raspberry Pi OS with desktop 64bit (2023-10-10)

pi@raspberrypi:~ $ python -V
Python 3.11.2

pi@raspberrypi:~ $ pip -V
pip 23.0.1 from /usr/lib/python3/dist-packages/pip (python 3.11)

# tcconfigインストール方法

– https://github.com/thombashi/tcconfig

“`
$ sudo apt install pipx
$ pipx install tcconfig
installed package tcconfig 0.28.0, installed using Python 3.11.2
These apps are now globally

元記事を表示

AtCoder始めます – まずは入茶を目指して –

こんにちは。
ツルマキと愉快な仲間たち Advent Calendar 2日目です。
最近始めたAtCoderについての意気込みと学びを書いていこうと思います。
AtCoderについて既出の素晴らしい記事は多くあるのですが、自身のアウトプットの為と、初学者目線の投稿で、同レベルの方や後で見直した時にどう間違えていたのかを振り返る事ができるようになれば良いなと思います。

# AtCoderとは
AtCoderは、国内の競技プログラミングのサイトで、日本を中心に世界的にも有名なものの1つです。
ユーザーは、コンテストの実績に応じて色(ランク)付けされ、「灰→茶→緑→水→青→黄→橙→赤」の順でランクが上がる仕組みになっています。具体的な難易度の目安は他の記事やX(旧Twitter)に様々情報があるので、そちらをご覧ください。
定期的に開催されるコンテストとして、 **ABC(AtCoder Beginner Contest)** や **ARC(AtCoder Regular Contest)** があります。
これら以外にも様々コンテストは用意されおり、賞金なども用意されています。コンテ

元記事を表示

PDFの内容をCSVにする

## PDFってなんだよ、いらんだろ
たまにExcelの内容をそのままPDFにしただけみたいなファイルがある。
PDFもExcelも俺嫌いなんだよ。

## それってどんなPDF?
「月間売上 pdf」で検索すると一番上に出てくるこう言うやつ。PDFファイルだけどこんなんただのExcelやん。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175961/c79fc3ba-0d3e-0f9b-23aa-8f6bf1ec0bd9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175961/3a1053ee-1062-1e1a-04ca-899d6ece3bd4.png)

## 実態Excelのくせしてテキストが表形式で取れない
テキストデータが取れない。マウスでドラッグするのもめんどくさいのにそのテキストもまともに取れない。PDFってなんなんマジ。

## pythonでPDFのデ

元記事を表示

word_idsの代わりの関数を作ってみる

## はじめに
最近自然言語処理はじめました :muscle:

[HuggingFaceのチュートリアル](https://huggingface.co/learn/nlp-course/ja/chapter7/3?fw=tf)をやってたのですが、モデルのトークナイザーにis_fast属性(高速トークナイザー)がなかったので作ることになりました。
※引用ばかりですみません
## word_idsとは?
自然言語処理でモデルにデータを渡す際、文毎の位置を0から割り当てたID
サブワードの分割では一つの単語として同じ数字が割り当てられる
## input_idsとの違い
Claude.ai
>input_idsとword_idsの主な違いは以下の点です。
>
>■input_ids
> ・Transformerベースのモデルへ入力するための入力単語のIDです。
> ・単語に加えて、特別トークン(CLS、SEPなど)も含まれます。
>■word_ids
> ・単語列の各単語に対して割り当てられたIDです。
> ・特別トークンは含まれず、単語のみに対するIDです。

## word_idsの

元記事を表示

grib2フォーマットの気象庁MSM-GPVをcsvファイルに変換する

## はじめに
今回はニューラルネットワークで行う波浪予測の下準備として,grib2データをpythonから読み込んで,計算に利用する各グリッド点における風速値をまとめたcsvファイルを作成する.
データの読み込みにpygribライブラリを用いるので,先にインストールしておく.[こちら](https://qiita.com/kurukuruz/items/6fc0be9efa34a2fd6741)を参考にした.

## 気象庁MSM-GPVのダウンロード
ニューラルネットワークによる波浪予測には海上風のgridデータが必要になるため,気象庁MSMデータをローカルマシンにダウンロードしてから読み込む.また,ファイル形式はgrib2形式のバイナリデータとして気象庁から提供されている.

京都大学生存圏研究所(RISH)が提供する[生存圏データベース](http://database.rish.kyoto-u.ac.jp/arch/jmadata/data/gpv/original/)からデータをダウンロードしていく.
データのダウンロードは以下のスクリプトを用いて行った.
“`pytho

元記事を表示

Knowledge base for Amazon Bedrock と LangChainでRAG実装

Knowledge base for Amazon BedrockがGAしたので、KendraではなくKnowledge base for Amazon Bedrockを使用したRAGをLangChainを使って実装してみます。
インデックスしてしまえばKendraとほぼ同じ使用感で使用でき、チャンクサイズの自由度が高いのが良いところかなと思います。

# 必要ライブラリのアップデート
boto3とLangChainを最新にします。
LangChainを動作確認したバージョンは`0.0.345`です。
“`
pip install -U boto3
pip install -U langchain==0.0.345
“`

# Knowledge base の作成
マネコンの`Amazon Bedrock`の`Orchestration`の`Knowledge base`の`Create knowledge base`から作成します。
名前を変えるかどうか程度でわりとデフォルトでいけるのですが、`Set up data source`でドキュメントが格納されたS3を指定します。それ

元記事を表示

excelファイルをPythonでつくる

[excelファイルをPythonから扱う方法](https://interuniversitylearning.com/archives/4012)が説明されていたのでやってみた。
## openpyxlのインストール

openpyxlをインストールするにはpip installを使う。
“`
pip install openpyxl
“`

## openpyxlをインポートしてワークブックを作成
openpyxlがインストールされていれば`import`でインポートできる。
Workbook()でワークブック作成できる。
“`
from openpyxl import Workbook
# 新しいワークブックを作成
workbook = Workbook()
“`

## ワークブックを保存
このように作ったworkbookは.saveを用いて保存できる。
“`
workbook.save(filename=”new_file.xlsx”)
“`

元記事を表示

Django DEBUG=Falseでクエリーログを出力する

先人の知識から、

を試してみましたが、djangoのバージョンが違うので、動かない・・・

– django 3.2
– python 3.9

“`middleware.py
class UseDebugCursorMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request):
self.process_request(request)
response = self.get_response(request)

return response

def process_request(self, request):
from django.db import connection

元記事を表示

型システムから考えるPython, Java, Golangそれぞれの違い

# 初めに

## 背景

今までPythonを使ってきたのですが、転職先ではJavaとGolangを主に使用することになりました。特にPythonにはない型を意識した開発のメリット、JavaとGolangのintefaceの違いがあまりよく分からなかったので、調べてみました。
この記事では、PythonとJavaとGolangの違いについて触れ、そして記事の最後には GolangとJavaのintefaceを違いを明示しつつ、Pythonで書き直してみました。

## 対象読者

* 動的型付け言語しか使ったことない人
* JavaとGolangの違いがはっきり分からない人
* 型を意識したことがあまりない人

## シンプルな実装

まず、Python, Java, Golangの3つで一番シンプルなクラスを書いてみる。
Pythonは以下を見てもらうと分かる通り、Pythonを知らない人でも、理解できてしまうぐらいシンプル。

Pythonの場合

“`python:simpleなクラス(python)
clas

元記事を表示

【psycopg2】AWS LambdaでPythonを動かすときに、モジュールインポートに失敗する原因についてまとめてみた

# はじめに
AWS LambdaでPythonを用いてコーディングする際に、Lambdaに標準で入っていないモジュールについてはレイヤーを作成して、動くようにする方法がメジャーかなと思います。
一方で、「**(Windows OSの)ローカル上で作成したレイヤーだとインポート時にエラーが出てしまって困っている**」みたいなケースが散見されているなと感じました。

特に、よくあるケースとしては、psycopg2のモジュールインポート時において、
“`bash
[ERROR] Runtime.ImportModuleError: Unable to import module ‘lambda_function’: No module named ‘psycopg2._psycopg’
“`
というようなエラーが出てしまうというケースです。私自身、これに頭を悩ませていました。

# この記事の目的

この記事では、**上記のエラーが起きる根本の原因であるDLLをざっくり理解し、処理の流れを明らかにすること**を目的としています。
もちろん、実際にLambdaが動くようにするために、具体

元記事を表示

GPT-4 with Vision を API 経由で触ってみる。Python と Chainlit で簡単に。

この記事は [セゾン情報システムズ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/sisco) 4日目の記事です。

# 背景
– OpenAI の ChatGPT で画像をインプットとする機能がリリースされ、API も利用可能になった
– Azure OpenAI で試したかったが、まだ未リリースなので OpenAI の API を試してみる
– 副次的な効果として最低限の費用で ChatGPT の機能を試せます
– API の最低クレジット 5$ から
– 最低限のプログラムで実現したい

# 前提
– OpenAI にアカウントを登録している
– python が利用可能

# 目次
– [OpenAI で API キーを生成](#openai-で-api-キーを生成)
– [python で chainlit を利用して簡単なプログラムを作成](#python-で-chainlit-を利用して簡単なプログラムを作成)

# OpenAI で API キーを生成

#### API キーを生成

元記事を表示

ChatGPTとPythonで学ぶ GAN(Generative Adversarial Networks)

皆さんこんにちは。今日も引き続きChatGPT先生をお迎えして、「ChatGPTとPythonで学ぶ GAN(Generative Adversarial Networks)」というテーマで雑談したいと思います。それではChatGPT先生、よろしくお願いします。

### **assistant**:

もちろん、よろこんでお手伝いします。GANは深層学習の一種で、生成モデルと識別モデルを競争させることで新たなデータを生成するという非常に興味深いアプローチです。

GANは二つのニューラルネットワークがあって、一つは生成器(Generator)、もう一つは判別器(Discriminator)と言います

### **user**:

ChatGPT先生、今日はちょっとお疲れですか?

### **assistant**:

大変申し訳ありません、それはちょっと不完全な説明でしたね。GANについてもっと詳しく説明します。

GANは、Ian Goodfellow氏によって2014年に提案された人工知能のアーキテクチャで、2つの部分から成り立っています;

元記事を表示

意外と知らない!? SQLAlchemy + SQLServerの落とし穴3選

## この記事について
アイレット株式会社Advent Calendar2023 4日目の記事です!

私はこれまで主にMySQLを触ってきたのですが、Python + SQLServerで開発する機会がありましたので、そこでハマったポイントを3つ紹介していきます。
私自身、まだまだ経験の浅いエンジニアなので、正しくない内容もあるかもしれませんが、ご容赦ください。
## SQLAlchemyとは
Pythonでよく使われているORM(Object Relational Mapper)です。
ORMとは、簡単に言うと、テーブルとクラスを対応づけて、データ取得・変更処理などを行う存在のことです。
[SQLAlchemy公式ドキュメント](https://www.sqlalchemy.org/)

それでは、ハマったポイントについて紹介していきます。
## 1. カラムの照合順序名がSQLServer独自のものになる
開発を進めていく中で、エンコードはUTF-8にしたはずなのに、varchar型のカラムの日本語が文字化けするという事象に見舞われました。
調べた結果、SQLServerでは、c

元記事を表示

状態空間モデルを基礎から学ぶ(理論からpythonによる実装まで) part2

# 本記事の内容
**状態空間モデルを基礎から学ぶ(まとめページ)**

https://qiita.com/matsumoto616/items/348e3703b63d1c731cd9

**前回(part1)の記事**

https://qiita.com/matsumoto616/items/d30091274784a28eb872

part2では線形ガウス型状態空間モデルに対するカルマンフィルタをPythonで実装してみる。今回は勉強のため(できる限り)スクラッチ実装するが、statsmodelsに実装されているものを使ってもよさそう。

https://www.statsmodels.org/dev/statespace.html

# 使用するデータ
statsmodels.datasetsにあるエルニーニョデータを使用する。

https://www.statsmodels.org/stable/datasets/generated/elnino.html

“`python
import numpy as np
import pandas as pd
import

元記事を表示

「0.1+0.2≠0.3」を説明できないエンジニアがいるらしい

この記事は[Nuco Advent Calendar 2023](https://qiita.com/advent-calendar/2023/nuco)の4日目の記事です。

弊社では、経験の有無を問わず、社員やインターン生の採用を行っています。
興味のある方は[こちら](https://www.recruit.nuco.co.jp/?qiita_item_id=9a5ea00415a008f06843)をご覧ください。

https://www.recruit.nuco.co.jp/?qiita_item_id=9a5ea00415a008f06843

## はじめに

後輩に 「なぜ0.1+0.2≠0.3になるんですか?」 と聞かれて答えられますか?

コンピュータの計算では「0.1+0.2」は「0.3」になりません。

これを理解していないと予期せぬ重大なバグを生み出す可能性があります。

分からない方、どうぞ安心してください。
この記事を読んだ全員が「0.1+0.2≠0.3」を理解できるように分かりやすく説明していきます。

## コンピュータが計算を間違う理由

元記事を表示

Python初心者が「2人でじゃんけんする」を書いた③ while文の練習

じゃんけんの手を0はグー、1はチョキ、2はパーとするとき、4や5の範囲外の入力時、再入力を促すためwhile文を利用する。

前回、その練習用として簡単な「数当てゲーム」を書いてみました。
・PC側で1から10をランダムに取得し、それを当てるまでループ。
このゲームの中で何を入力したか表示するようにと、
nlist = [] # 入力した数字を格納するリスト
を入れ、表示するようにしましたが、↓
“`python
当ててみて 1~10のどの数字? –>> 3
ちがう
これまでに入力した数字 [3]
1~10 –>> 6
ちがう
これまでに入力した数字 [3, 6]
1~10 –>> 9
“`
このリスト、同じ数値でも加えてしまうことに投降後に気が付きました。

少し悔しい思いをしましたので、入力済数値はリストに加えない。
ここの部分を修正しました。

“`python
#while Trueの練習用 再入力を促す「数当てゲーム」ver4

import random

N = random.randint(1, 10)
#print(N) # Nを表示(カンニング用)

元記事を表示

文系エンジニア、順序集合を学ぶ

# はじめに

計算機科学において、順序集合関連の理論は、データ構造、アルゴリズム、プログラム分析、型システムなど、多くの領域で重要な役割を果たしています。

これらを自分の「🧑‍💻力」に組み入れていきたい。

その勉強過程のノートになります。

# 集合とは
集合(Set)は、異なる要素のまとまりを指します。

**定義**:
集合は、明確に定義されたオブジェクト(要素やメンバー)のコレクションです。
例えば、数字の集合、文字の集合などがあります。
通常、波括弧({})を使用して表記されます。例:{1, 2, 3}。

**特徴**:
集合内の要素は一意的で、同じ要素が二度数えられることはありません。また、集合内の要素の順序は重要ではありません。

# 順序集合(Ordered Set)とは
順序集合は、要素間に特定の順序関係が存在する集合を指します。

**定義**:
順序集合は、要素間に何らかの順序関係が定義された集合です。この順序は、数学的な意味での「大きい」「小さい」などの関係であることが多いです。
順序集合は、通常、丸括弧(())を使用して表記されることが多いです。例:(

元記事を表示

Flaskを使ってDocker、Pythonでログイン認証

## はじめに
DockerとPythonを使ってログイン認証のサービスを作成しました。
今回はPythonのWebフレームワークの一つであるFlaskを使ってHTMLページを表示します。
昨年にDockerとPythonで”Hello World”した記事の延長のような形です。
以前の記事は[こちら](https://qiita.com/Pitts7/items/542196eaec6bc0b77c38)

## Flaskとは
Pythonにはいくつか有名なWebフレームワークがありますが、Flaskを使って進めていきます。
Flaskは他のWebフレームワークよりもフレームワークの仕様に縛られることなく、アプリ開発が可能です。

## 環境
“`

macOS Sonoma 14.1
Docker Desktop for Mac
Docker version 24.0.6
Docker Compose version v2.22.0
VS code
“`

### ゴール
今回のゴールはFlaskでHTMLページを読み込んで、localhost上でログイン画面を表示することで

元記事を表示

FireDucksのご紹介

こちらは [NEC デジタルテクノロジー開発研究所 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/nec-dt-labs) 4日目の記事です。FireDucksはすでに[一日目](https://qiita.com/shu_ohm1/items/b0a35cfb4fce5b71c715)に登場しておりますが,改めてご紹介したいと思います.

FireDucksを一言で紹介するとpandasの高速版です.pandasとAPI互換ですので,何も考えずに置き換えて使ってもらうことを想定しています.つまり,置き換えてエラーが出たり,結果が変わったり,遅くなったりすることなく,たいていの場合は10倍くらい速くなることを目標としています.これまで数時間かかるから夜に動かしていたものが日中に何回も動かせたり,コマンド打って10秒くらい待ってたものが一瞬で終わったりということをやりたいと思っています.

現状(といっても二か月前くらいですが)の性能は以下の様になっています.これはpandasに対してFireDucksがどれくら

元記事を表示

【Python】文字列の扱い

## 前回までのあらすじ
前回は、Pythonでの数値演算について確認しました。

## 本日のゴール
– 文字列の扱いを知る
今回は、文字列の扱いを確認し、Pythonにおける文字列の扱いの感覚をつかみます。

## 文字列の扱い
文字列として扱うには、文字を、`シングルクォート(‘)`または、`ダブルクォート(“)`で囲う必要があります。どちらを使用しても大丈夫です。ただし、囲う両端は同じ文字で囲う必要があります。
### 文字列の出力
“`python:python
‘Hi, there.’
“`
“`:結果
‘Hi, there.’
“`
### ダブルクォートを文字列内で利用する
“`python:python
‘”Yes, we can.”, he said.’
“`
“`:結果
‘”Yes, we can.”, he said.’
“`
### print関数での出力
前回の動作確認時にも利用していますが、print関数での動作を確認していきます。
“`python:python
print(‘”Yes, we can.”, he said.’)
“`

元記事を表示

OTHERカテゴリの最新記事