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

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

CSVをJSONに変換するPythonプログラムを作った

## 背景

業務の中でCSVファイルをJSONに変換したいなーというタイミングがありました。
ググったところ、そのニーズを満たしてくれるサイトはいくつか見つかりましたが、社内で扱うデータを外部のウェブサイトに入力するのは、セキュリティの観点から少し不安を感じていました。
(さらに調べてみると、Visual Studio Code(VSCode)の拡張機能を使えば簡単に変換できる方法もあることが分かりましたが、そんなに難しくないんではないかと思ったので、自分自身でプログラムを書いてみました。)

## Pythonを使って実装

以下に、CSVファイルをJSONファイルに変換するためのPythonプログラムを紹介します。
このプログラムはコマンドライン引数からCSVファイルのパスとJSONファイルのパスを受け取り、CSVファイルの内容を読み取りJSONファイルに変換します。

“`python
import csv
import json
import argparse

# コマンドライン引数の解析
parser = argparse.ArgumentParser(descript

元記事を表示

[OpenAI] API出力の型を自由に!:json schemaの設定方法(Python)

## 本記事を執筆した背景

以前までは、OpenAIのAPIを叩いた結果の型がわからず、Webアプリ開発などに利用しにくいことが課題でした。
しかし2024年8月6日に新しく出たモデルである`gpt-4o-2024-08-06`を利用することで出力結果の型を設定出来るようになりました。
しかしながら、参考となる文献が公式ドキュメントを含めてもまだ十分に整っていない状態です。本記事では実装方法を詳しく、丁寧に説明します

## 本記事の内容
– `gpt-4o-2024-08-06`を使用し、`JSON`形式で設定する
– OpenAIの呼び出し方法を1つずつ説明する
– `Python`を用いて実装(他の言語も同様の実装となるので言語による制約はないと思います。)

– 結果だけを確認したい方は、[5. 実行](#5-実行)を参照して下さい

## 目次

– [1. OpenAIのAPIキーの発行](#1-openaiのapiキーの発行)
– [2. APIの呼び出し](#2-apiの呼び出し)
– [3. messageの設定](#3-messageの設定)
– [4. for

元記事を表示

秀和システム「Python x API で動かして学ぶ AI活用プログラミング」1章

秀和システム「Python x API で動かして学ぶ AI活用プログラミング」
1章をやってみた。
ここでは記事の内容ではなく、自環境での動作結果だけを記録のために記載しています。

## 環境
OS:Windows 11 Home 64 ビット オペレーティング システム
CPU:11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz 3.00 GHz
RAM:32.0 GB

## ソース
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/d2750610-1589-660e-2c7f-880d19e3bf94.png)
(中略)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/6667b0e5-a740-25bf-d91b-a01d0573795d.png)

“`1_ObjectDetection_app.py

元記事を表示

YouTube字幕を取得し、LLM(Gemini-1.5-flash)で要約するアプリ作成の試行のつづき

## ReactとNext.jsでフロント、Pythonでバックエンドを開発し、Vercelへデプロイした話。ついでにSquidとngrokでプロキシサーバも作った!の続編です。

## 困ったこと(大きく2点)

## (1)フロントとバックの通信問題
– フロントエンドとバックエンドを別々のアプリケーションにする必要がありました。そこで、フロントエンドとバックエンドを通信させようとしたところ、CORSエラーが発生。CORSの制御は私には難しく感じました。
AIに相談した結果、Vercelに2つのアプリをデプロイし、1つのドメインとして扱う方法が可能とのことで、以下のようなJSON設定を作成しました。(フロントはデプロイした時に生成されるURLを使い、バックは、以下のようにフロントのサブURLに見える。)
###
– Vercel.jsonをフロントエンド側に設定して、フロントエンドからバックエンドを呼び出す方法
Vercel.jsonの設定でフロントエンドから見て、バックエンド(”https://backend-teal-five-69.vercel.app”)は、/app2/と見

元記事を表示

【Atcoder解法検討】ABC301 A~D Python

## A – Overall Winner
#### 問題ページ : [A – Overall Winner](https://atcoder.jp/contests/abc301/tasks/abc301_a)
### 考察
文字列S中の”A”及び”T”の数をかぞえ、異なるなら大きい方、同じであるなら最後の勝者でない方、を出力。
### コード
“`python
N = int(input())
S = input()

A, T = 0, 0
for i in range(N):
if S[i] == “A”:
A += 1
else:
T += 1

if A > T:
print(“A”)
elif A < T: print("T") elif A == T and S[-1] == "T": print("A") elif A == T and S[-1] == "A": print("T") ``` ## B - Fill the Gaps #### 問題ページ : [B - Fill t

元記事を表示

Pythonのデバッグ時とexe化後で異なるモジュールインポート問題の解決法

## はじめに
Pythonプロジェクトを開発する際、モジュール間のインポートは非常に重要です。
しかし、デバッグ時には問題なく動作していたインポートが、exe化した後に失敗することがありました。
今回は、自分が遭遇した `ModuleNotFoundError` について、その原因と解決方法を共有します。

## プロジェクト構成

まずは、プロジェクトの基本的なディレクトリ構造を確認します。
このような構成のプロジェクトを例にします。

“`bash
MyProject/

├── myproject/
│ ├── __init__.py
│ ├── main.py
│ └── util.py

└── README.md
“`

`main.py`では、同じディレクトリにある`util.py`をインポートして使おうとしています。

### `main.py`のコード例

“`py
import os
import sys

from myproject.util import some_function

def main():
some_funct

元記事を表示

python クラスについてイメージしてみた

## 問題
pythonのクラスが難しい。自分のためにまとめてみることにした。

:::note warn
あらかじめ記載しておきますが、初学者視点で自分の頭で理解できるようにまとめたものです。認識の違いや、理解の甘さ等、多々あると思いますが、あくまで自分のイメージの話です。しっくり来たのでまとめさせてもらいました。ご了承ください。

:::

## よく言われる設計書
クラスの説明があるとき、必ずといっていいほど言われることが「クラスは設計書、インスタンスが製品」
言っていることはなんとなくわかるが、いまいちしっくりこない。
### 言い換えてみた
そもそも製品をつくるため(返り値をもらうため)にクラスを設定している。そして、「クラスは工場。インスタンスは部品セット」と考えることにした
### イメージ
工場(クラス)➝この変数を与えたら、この部署(メソッド)を使ってこのような結果を返します。
部品セット(インスタンス)➝工場(クラス)に値を与えれば、製品ができあがる。
【下図①〜⑤のイメージ】

![ス

元記事を表示

非線形動力学の疎同定(SINDy: Sparse Identification of Nonlinear Dynamics)

# はじめに
[前回投稿](https://qiita.com/bokuikkun/items/1beb699d4eb9413e6038)のDynamic Mode Decompositionの続き。
本稿ではSINDyの導入に関する概要を理解し、ローレンツ系を用いてシステムの推定のデモを実施する。早く次章のクープマン作用素に行きたいので、応用や拡張、歴史的背景はすっ飛ばす。

# 概要
SINDy(Sparse Identification of Nonlinear Dynamics)とは、物理システムのダイナミクスを支配する非線形な微分方程式を、データから自動的に抽出するアルゴリズムである。ただし、ハイクオリティな測定値とデータ数が求められる。
後のデモコードでは辞書行列の作成をスクラッチで行っているが、オープンソースの[PySINDy](https://pysindy.readthedocs.io/en/latest/examples/2_introduction_to_sindy/example.html)というのがあり、メソッドが用意されているので、比較的容易に実装できる。

元記事を表示

ABC376-B(Hands on Ring Easy)と円環の基本的な特性について

https://atcoder.jp/contests/abc376/tasks/abc376_b

 B 問題にしては結構むずかしめの問題が出ました。円環の基本的な性質についてまとめるいい機会になったので、まとめます。

# 1. 愚直解

“`python
n,q = list(map(int, input().split(‘ ‘)))
hand = [1,2]
ans = 0
for i in range(q):
h,t = input().split()
t = int(t)
idx = int(h==’R’)
now = hand[idx]
other = hand[idx^1]
collide = False
cnt = 0
while now != t:
now = now%n + 1
if now == other:
collide = True
cnt += 1
if collide:
ans += n –

元記事を表示

paizaラーニング問題集「【文字列 3】p4!2@」を解いてみた

https://paiza.jp/works/mondai/b_rank_new_level_up_problems/b_rank_new_level_up_problems__leet_paiza

▼考え方

題意の通りコーディングしました。

▼コード
“`py
########## 処理0(準備) インプット ###########

S = input()

########## 処理1 Leet表現が含まれるか判定する処理 ###########

for i in range(len(S)):

if S[i] == “p”:

if S[i:i+5] == “paiza”:
print(“paiza”)
exit()

elif (S[i+1] == “a” or S[i+1] == “4” or S[i+1] == “@”) and\
(S[i+2] == “i” or S[i+2] == “1” or S[i+2] == “!”

元記事を表示

paizaラーニング問題集「【文字列 2】super long int」を解いてみた

https://paiza.jp/works/mondai/b_rank_new_level_up_problems/b_rank_new_level_up_problems__super_long_int

▼考え方

題意の通りコーディングしました。

▼コード
“`py
########## 処理0(準備) インプット ###########

X = input()

########## 処理1 hash(X)の値を求める処理 ###########

print(int(X[0:8])+int(X[8:16])+int(X[16:24])+int(X[24:32]))
“`
▼参考
X = “12345678123456781234567812345678”のとき、X[0:8]、X[8:16]、X[16:24]、X[24:32]はすべて”12345678″になります。

元記事を表示

paizaラーニング問題集「【文字列 1】疑似数字」を解いてみた

https://paiza.jp/works/mondai/b_rank_new_level_up_problems/b_rank_new_level_up_problems__like_numbers

▼考え方

最初の文字を変数iで指定し、最後の文字を変数jで指定しました。最初の文字から最後の文字まで連続して取り出すため、スライス操作を使用しました。

▼コード
“`py
########## 処理0(準備) インプット ###########

S = input()

########## 処理1 文字列Sから疑似数字を取り出す処理 ###########

for i in range(len(S)):

for j in range(i+1,len(S)+1):

# tmp_gizisuzi:文字列Sから取り出した文字列を格納する変数
tmp_gizisuzi = S[i:j]

if tmp_gizisuzi[0].isdigit() == True and tmp_gizisuzi[-1].i

元記事を表示

プロジェクトの失敗。を報告会議の場で。

#### ショートストーリー:「精密さの向こう側」
プロローグ
東京の夜、ネオンが照らす渋谷のビル群を眺めながら、亮介は深い溜息をついた。彼は一人のプログラマーとして数々のプロジェクトを手がけてきたが、今進行中のプロジェクトはこれまで以上に困難だった。

その日も、彼はオフィスの片隅でキーボードを叩いていた。パソコンの画面には、AIの出力が無数の行として並んでいる。しかし、その出力は彼が望んだものではなかった。亮介の提案した「小さなモデルのテキスト出力をベクトル表現に変換し、同様に大きなモデルのテキストもベクトル表現に変換して、それらのベクトル表現同士をマッピングさせるニューラルネットワークを作成する」という手法は、どうやら思った通りには機能しなかったのだ。

プロジェクトの始まり
数ヶ月前、亮介はあるアイデアを上司に提案していた。「小さなニューラルネットワークモデルを使って、効率よく、かつ精密な出力を大きなモデル並みに変換できるシステムを試してみたい」と。具体的には、小さなモデルの出力をベクトル化し、それと大きなモデルの出力もベクトル化して、両者のベクトル表現をマッピングさせるこ

元記事を表示

三項演算子とは?

### 概要
三項演算子は、条件式によって値を簡潔に返すために使われる構文です。今回は、Python、Java、Swift、C#での三項演算子の書き方を紹介します。

三項演算子とは?
三項演算子は、**「条件式 ? 真の値 : 偽の値」**という形式で、条件によって返す値を決定する構文です。これにより、if-else文を使わずに簡潔に条件判定を行うことができます。

それでは、各言語での具体的な使用例を見ていきましょう。

#### 1. Javaでの三項演算子
Javaでは、三項演算子は「条件式 ? 真の値 : 偽の値」の形式で書きます。

サンプルコード
“`java
public class Main {
public static void main(String[] args) {
int number = 10;
String result = number > 0 ? “Positive” : “Negative”;
System.out.println(result); // Output: Positive

元記事を表示

numpy で高速に区間列どうしの要素を対応付ける

## やりたいこと
一次元の区間`(s,t)`の集合が2つ(`s1` と `s2`)存在する。
`s1`中のある要素`s1_i`が、`s2`中のどの要素`s2_j`に対応するかを表現する組合せF `(F: s1 -> s2)`を作りたい。
![ 2024-10-22 0.08.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/511585/ad161e8f-f109-4b24-e380-7da117ebe0b4.png)

### 詳細な条件
1. `s1` と `s2`は、それぞれ $10^3$ 個程度の要素を持つ
2. 対応付けは1分以内に完了したい

## 方針
– 全ての`s1_i`と`s2_j`で Intersection over Union (IoU)を計算
– IoUを一言でいうと、2つの要素における重なりの比率
– 参照: [【精度指標】IoUとは
](https://qiita.com/CM_Koga/items/82d446658957d51836cf)
– `

元記事を表示

文字を動かすやつ、terminaltexteffectsのwindows下での導入 [python]

# 経緯
![オエー鳥_軽量.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3907383/a1bca90c-74b6-06ee-3507-a12ac14221b9.gif)

面白そうなモジュールがあったので動かしてみた、
自分の環境(windows)ではレジストリを編集しないと動かない感じだったので備忘録化。

ちなみにQiitaで記事を書いてみたかったので初投稿です。

# インストール
普通にpipでインストールできる。
~~~ コマンドプロンプト
pip install tarminaltextefect
~~~

# 基本コマンド
~~~コマンドプロンプト
echo 出力したい文章 | tte beams
~~~
とりあえず標準出力してみる。
terminaltextefectはtteコマンドで使用できる。今回はbeamエフェクトを適応。

# エラー
結果:画面に収まりきらない謎テキスト

![image.png](https://qiita-image-store.s3.ap-nor

元記事を表示

ABC376 C – Prepare Another Box

## はじめに
10/19開催のABC376のC問題の復習です。

https://atcoder.jp/contests/abc376/tasks/abc376_c

## 問題文
$1$から$N$までの番号が付けられた$N$個のおもちゃと、$1$から$N−1$までの番号が付けられた$N−1$個の箱があります。
おもちゃ$i (1≤i≤N)$の大きさは$A_i$、箱$i (1≤i≤N−1)$の大きさは$B_i$です。

すべてのおもちゃを別々の箱にしまいたいと考えている高橋君は、今から以下の操作を順に行うことにしました。

0. 任意の正整数$x$を選んで、大きさ$x$の箱を$1$つ購入する。
0. $N$個のおもちゃそれぞれを、(元々あった箱と新しく購入した箱を合わせた)$N$個の箱のいずれかに入れる。 ただし、各おもちゃはそのおもちゃの大きさ以上の大きさを持つ箱にしか入れることはできず、また$1$つの箱に$2$つ以上のおもちゃを入れることもできない。

高橋君は、操作$1$で十分な大きさの箱を購入することで操作$2$が実行できるようにしたいですが、大きな箱ほど値段が高いため、

元記事を表示

【Python】平面2リンクマニピュレータの可動範囲をmatplotlibで表示する

# はじめに

大学の研究の一環でロボットアームの可動範囲を計算する必要があり,方法を調べてみたのですが,意外と資料が少ないと感じました.
そこで,この記事では平面2リンクマニピュレータを対象に可動範囲をmatplotlibで描画する方法を紹介したいと思います.

実行環境は以下の通りです.

– Python 3.12.7
– matplotlib 3.9.2
– numpy 2.1.2

# 2リンクマニピュレータ

### 取り扱うマニピュレータ

まず,取り扱うマニピュレータのパラメータを定義します.

– リンク1の長さ: $l1$
– リンク2の長さ: $l2$
– 関節1: $θ1$
– 関節2: $θ2$

簡単のため,ジョイント1は原点に固定されています.
また,関節は反時計回りが回転の正の方向となっています.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3632687/16eb904a-c0ae-fefc-6e15-e57774cd7cc7.png)

## 順

元記事を表示

『モデルベース深層学習と深層展開』読み会レポート#10

$\def\bm{\boldsymbol}$

# 概要
– オンラインで開催している[『モデルベース深層学習と深層展開』読み会](https://majime-ni-study.connpass.com/event/)で得られた知見や気づきをメモしていく
– ついでに、中身の理解がてらJuliaサンプルコードをPythonに書き直したコードを晒していく
– 自動微分ライブラリにはJAXを使用する

# 第10回
## 大まかな内容
– 平均合意プロトコルに対する深層展開
– オイラー法と深層展開による微分方程式モデルのフィッティング
## 議論になったこと
### 5.4.3節 あたり
– 空手クラブのデータセットは、結構他の教科書とかでも見たから定番なのかも
– 図5.11は提案手法が結構不安定に見えるが原因なんだろう…
– サンプルコード回しながら
– グラフの誤差が上がる部分は毎回挙動が変わる
– やはり、この不安定さはよくないのでは?
– 対数グラフでこの上下の仕方は結構でかい
– iterationを増やして回

元記事を表示

PythonでGPT-4o-miniをサクッと使ってみた [Azure OpenAI]

個人開発でLLMを使うことになったので、すこし触ってみました。ハマりポイントがいくつかあったので、それも含めて使い方をまとめていきます。

Azure OpenAIやGPT-4o-miniに関する説明は、ここでは省略させていただきます。

## 1. リソースの作成

Azure Portalから「Azure OpenAI」を選択して新しいリソースを作ります。(このとき「Azure AI Service」という似た名前のサービスも表示されたり、別のページでは表記揺れ(?)で「Azure OpenAI Service」と呼ばれたりしていたので少しややこしかった)

![2024-10-21_11h34_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1272414/7f2f5cb6-6e5d-95f5-932c-d098844b08fe.png)

設定項目は

– インスタンスの詳細
– リージョン:East US(リージョンによっては使えないモデルがあったりするので、[調べておいたほうが良

元記事を表示

OTHERカテゴリの最新記事