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

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

Python約30行で作る Bedrock x Claude3 のStreamingチャットアプリ

これまで見て見ぬふりをしてきた「Streamlit上でStreaming出力させる」プログラムを作ってみます。

# ライブラリのインストール
いつのまにか「langchain-aws」なるものが生まれているので今回は最終的にはそれを使います。
“`
pip install -U boto3 streamlit langchain langchain-aws
“`

https://python.langchain.com/docs/integrations/platforms/aws/

# まずboto3からStreamingしてみる

以下を参考に、リクエストとレスポンス取得をClaude3に合わせて微調整します。

https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/inference-invoke.html

“`Python:
import boto3
import json

bedrock = boto3.client(service_name=’bedrock-runtime’)

body =

元記事を表示

pyenvをWSL(Ubuntu)にinstallする方法

## なぜこの記事を書いたのか

[githubのリポジトリ](https://github.com/pyenv/pyenv)にやり方が書いてありますが,Macはbrewとかで比較的簡単にinstallできそうだったが,ubuntuを使っている自分はinstallに手間取ったので防備録として書きました。

## 対象の読者
– Ubuntuユーザ
– WSL(Ubuntu)ユーザ

## インストール方法

– まず,依存関係のあるパッケージを入れます。[この辺に記載あり](https://github.com/pyenv/pyenv/wiki#suggested-build-environment)

“`shell
sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-d

元記事を表示

Pythonの all(), any() にリスト内法表記を組み合わせた際の動作を確認する

# 背景
組み込み関数all()の挙動で気になることがあったので検証。
※最終的にはリスト内法表記どうこうというより all(), any()の検証になりました。

リスト内の要素をチェックして、条件にマッチしたらTrueを返したい.

これをany() + リスト内法表記で表現するのに以下のように実装。
“` python
# 1の要素が1つでもあったらTrueを返すのを想定→今回はTrue
>>> a = [1,2,3,4,5]
>>> any([x for x in a if x == 1])
True
# 6の要素が1つでもあったらTrueを返すのを想定→今回はFalse
>>> any([x for x in a if x == 6])
False
“`
良さそう。

ついでにall()を試す。感覚的にはFalseが期待だったがTrueになった
“` python
# 全部の要素が1だったらTrueを返すのを想定→今回はFalse
>>> a = [1,2,3,4,5]
>>> all([x for x in a if x == 1])
True
# 全部の要素が6だっ

元記事を表示

cv2.error: OpenCV(4.9.0) D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:696: error: (-2:Unspecified error) could not find a writer for the specified extension in function ‘cv::imwrite_’

# エラー内容の共有

“`ruby:circle.py
import numpy as np
import cv2

img = np.zeros((400,400,3), np.uint8)
cv2.circle(img, (200, 200), 50, (255, 0, 0), 1)
cv2.imwrite(r’C:\Users\tmasa\OpenCV4_Programming_Getting_Started_in_Python\circle1.img’, img)
cv2.imshow(‘img1’,img)
“`

これの実行時にエラーが出ました。

## 解決方法
拡張子が.imgになってました。.pngですね…

元記事を表示

【Atcoder】ABC 350 C問題

# コンテスト名

AtCoder Beginner Contest 350

コンテストURL
https://atcoder.jp/contests/abc350

# 考えたこと
整数の組 (i,j) をswapしてsortする

選択ソート?

結果
計算量$O(n^2)$なので当然TLE

# 次に考えたこと

ヒープソートを使う

結果
heapqを使えばsortだけならいけそうだが、問題文に
$「l 回目の操作で選ぶ整数 i,j を空白区切りで出力せよ。」$
と書いてあるので(自分には)不可能。

# 公式解説
https://atcoder.jp/contests/abc350/editorial/9810?lang=ja
https://atcoder.jp/contests/abc350/editorial/9832

# 考察

なるほど。そもそも最小値を見つける必要がなく、必ずi番目の数字はiになる訳か。(当たり前)
ただ、$「現在 A の中で i がどこにあるか」$を探す際にindexメゾットを使うと
$O(n^2)$になってしまうから「A の中で値 i

元記事を表示

openpyxlをうす〜く理解しよう~その1(値編)

# はじめに
なんやかんや言ってもエクセルを使う場面って多い。
そして、見せる資料としても、チェックする資料としても活躍の場が多い。
なので、エクセルに書き込んで、体裁を整えるためのチートとして活用していただければ!
と思ったけど、なかなか深い。うん、深い。
なので、うす〜く、さらっとopenpyxlを理解したいと思います。

ざっぱに、今回の内容はこんな感じ
1. ファイルの読み込みから保存
1. openpyxlでエクセルを操作するための準備
1. セルの値の取得
1. いったん、ここいらで中締め

まずはここまで。

# 環境
MacBookAir 2020 M1
python=3.10.8
openpyxl=3.1.2
インストールは`pip install openpyxl`で!
あんまり関係ないわな。

# openpyxl
言わずと知れたopenpyxlのドキュメントがこちら。正直、よくわからん。マジでわからん。
なので僕なりに整理した順に追っていく。

https://openpyxl.readthedocs.io/en/stable/index.html

# フ

元記事を表示

pandas クイズ

—-
# はじめに

—-
# 概要
pandasを使っていたハマったことや、ハマりそうなことをクイズにしました。

問題の多くは2択です。直観で答えてみてください。

:::note info
2024/04/19に社内でpandasクイズを実施しました。
:::

—-

## 動作環境
以下の環境で動作確認しました。

* pandas 2.2.2
* numpy 1.26.4
* Python 3.12.1

事前にIPythonで以下をimportしています。

“`
In [1]: import pandas as pd
In [2]: import numpy as np
“`

—-
## 問題文の例(出力結果を答える)
IPythonで実行したときに、どのような結果になるかを選択してください。
問題となる実行文は、`In [?]`で表します。
出力結果の選択肢は`Out[1]`, `Out[2]`のように表します。

“`
In [?]: np.inf – np.inf

Out[1]: nan

Out[2]: 0.0

Out[3]:
ra

元記事を表示

ローカルPCからDynamoDBにCSVデータを簡単に入稿する方法

## 概要
dynamodbにデータを入稿する際に、以下の問題が発生した。
– AWS ManagementConsole上からまとめてデータをインポートすることができない(1行ずつなら可能)
– 1行ずつやるとしても、jsonでの入稿になるので面倒くさい
– まとめてインポートする場合、S3との連携などが必要で面倒くさい

よって、ローカルのpythonを実行し、dynamodbテーブルの自動生成&データ入稿を出来るようにした。

## 前提条件
実行の際の条件として、以下が実行可能となっている必要がある。
– python3.xが実行可能なこと
– pipコマンドが実行可能なこと(pip3でも良い)
– aws cliが実行可能なこと
– aws credentialが設定されていること

## 実装
以下のコードは実装後、chatGPT4にコメントを追加&リファクタしてもらったものです。
partition keyはid(string)です。
変更したい場合は、KeySchemaを修正すると良いかと思います。

#### csvファイルの準備
インポートしたいcs

元記事を表示

カテゴリ変数をダミー変数化した時に教師データとテストデータの列数をそろえる

## ダミー変数化(ワンホットエンコーディング)で配列がぐちゃぐちゃになる

![ng.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/b3d34ae4-9ccf-d12a-47c1-498050492921.png)

カテゴリ変数をダミー変数化すると、ユニークな値の数に応じて変数を増やすことができます。配列としては列数が増えることになります。

冒頭の図のように、教師データと検証データ、テストデータに対して個々にダミー変数化を行うと、ユニークな値が共通しない時に配列が揃いません。

そこで、以下の図のように、ユニークな値が異なる場合でも、**列の数と順番**が合うような処理を解説します!

![ok.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/c0b3ca74-7dfe-9314-d139-a95082b2bafc.png)

## 問題設定
題材として、Kaggleのこちらのコンペデー

元記事を表示

paiza.ioでpython その9

# 概要

paiza.ioでpythonやってみた。
ED法とか、見つけたので、やってみた。

# 参考にしたページ

https://qiita.com/pocokhc/items/f7ab56051bb936740b8f

# 実行結果

“`
0 in 1.00 -> 0.53, target 1.00, metric 0.58
1 in 1.00 -> 0.61, target 1.00, metric 0.47
2 in 1.00 -> 0.67, target 1.00, metric 0.39
3 in 0.00 -> 0.59, target 1.00, metric 0.54
4 in 0.00 -> 0.68, target 1.00, metric 0.41
5 in 1.00 -> 0.81, target 1.00, metric 0.20
6 in 1.00 -> 0.82, target 1.00, metric 0.19
7 in 1.00 -> 0.83, target 1.00, metric 0

元記事を表示

「Python入門」について動作を確認してみた

# 概要

「Python入門」の全ページについて動作を確認していて、全て完了しました。
以下のページを参考にしました。

https://www.javadrive.jp/python/

# 実装

動作の確認を行った項目は以下の通りです。

Pythonインストールと環境設定
Pythonのダウンロードとインストール
Pythonに関するドキュメントを参照する
Python利用のための環境変数PATHを設定する
Anacondaのインストール
Pythonプログラムの基本事項
Pythonを対話モードで利用する
ファイルに記述したプログラムを実行する
Pythonでの文の区切りと長い文を途中で改行して入力する方法
コメントを記述する
プログラムを保存するファイルで使用する文字コードを設定する
Jupyter Notebookの使い方
Jupyter Notebookのインストール
Jupyter Notebookの起動と停止
ノートブックの作成とPythonプログラムの実行
Jupyter Notebookの基本操作とショートカットキー
Markdownセルを使ってテキストを表示

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その74 Dropdown による AI を選択するドロップダウンメニューの作成

# 目次と前回の記事

https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0

https://qiita.com/ysgeso/items/e28b2e6fa33d53c5ff5d

## これまでに作成したモジュール

以下のリンクから、これまでに作成したモジュールを見ることができます。

https://github.com/ysgeso/marubatsu/blob/master/074/marubatsu.py

https://github.com/ysgeso/marubatsu/blob/master/074/ai.py

## ルールベースの AI の一覧

ルールベースの AI の一覧については、下記の記事を参照して下さい。

https://qiita.com/ysgeso/items/10d1d01192c014173e4b

# 今回の記事の内容

前回の記事で __リセットボタン__ を __実装__ しましたが、__異なる AI__ と __対戦__ を __行う__ 場合は、__キーワード引数 `ai`_

元記事を表示

Lambda layersの作成方法 (Cloud9で簡単作成)

## 初めに
Lambdaを開発する上で、どうしても追加ライブラリが必要になることがあります
そういう時は、layers機能を使い、対応しますが、今回Cloud9で四苦八苦したので、
備忘録として、残します

## 対応したい内容
– jwtライブラリが必要になった為、layers機能で対応する

## Cloud9でLayerを作成する
#### Cloud9 起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3747609/c456a765-5a59-2138-c53f-175215c32676.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3747609/4ab5b832-b1b7-0fc6-746f-ade3b5bc648c.png)

AmazonLinux2023で、起動していきます。

Cloud9の管理コンソールに入ります。
![image.png](https

元記事を表示

ED法実装(仮)(一応バッチ学習対応)

一応動いたので共有しておきます。
~~学習が安定しないので何かが足りていないと思います。~~
(追記)問題の原因が多分わかったので後ほど修整します。(出力をまた+-両方として次の層に入力してしまっている)
(追追記)取り急ぎバッチ非対応版のみ修正しました。

# とりあえず実装

“`python

import torch
import torch.nn as nn
import numpy as np

class Layer:
def __init__(self, in_, out_, alpha=1., ppn=None):
self.in_ = in_
self.out_ = out_
self.alpha = alpha
self.pn = torch.arange(out_) % 2 == 0
if ppn is None:
ppn = torch.arange(in_) % 2==0
self.ppn = ppn
self.s

元記事を表示

[Python] 次元削減の実装 (PCA/ t-SNE/ UMAP)

# はじめに
>次元削減(じげんさくげん、英: Dimensionality reduction、dimension reduction)とは、高次元空間から低次元空間へデータを変換しながら、低次元表現が元データの何らかの意味ある特性を保持することである。
出典:[Wikipedia](https://ja.wikipedia.org/wiki/%E6%AC%A1%E5%85%83%E5%89%8A%E6%B8%9B)

## PCA
**主成分分析(principal component analysis; PCA)**

“`
pip install scikit-learn
“`

“`python
from sklearn.decomposition import PCA

reducer = PCA(n_components=5) # 主成分数を指定
res = reducer.fit(array)
“`

## t-SNE

“`
pip install scikit-learn
“`

“`python
from sklearn.manifold impo

元記事を表示

Python Simplenamespaceの利用

[SimpleNamespace](https://docs.python.org/ja/3/library/types.html#types.SimpleNamespace)を使うと、辞書型にkeyを使わずに参照をすることができる。

ex. configという辞書を作りたい時
従来:
“`py
config = {}
config[‘abc’] = ‘001’

“`
であるが、SimpleNamespaceを使うと、
“`py
from types import SimpleNamespace

config = SimpleNamespace()
config.abc = ‘001’
“`
のようにかけて楽である。

元記事を表示

Maya 2025 非ユニークアトリビュート名の話

Maya 2025 に non-unique attribute names というなかなかえぐい仕様が追加されたので、調べたり [cymel](https://ryusas.github.io/cymel/ja/index.html) で対応したことを書きます。

# どういうこと?
Maya のアトリビュートには `compound` という型があり、子のアトリビュートを束ねることができるので、アトリビュートの階層構造が作られます。
たとえば `transform` ノードの `translate (t)` というアトリビュートは、正確には `double3` という型ですが `compound` 型の一種です。ご存知の通り `translateX (tx)`、`translateY (ty)`、`translateZ (tz)` という子が束ねられています(カッコ内はショートネーム)。

“`
translate (t)
├ translateX (tx)
├ translateY (ty)
└ translateZ (tz)
“`

こんな感じのものとして、当た

元記事を表示

並列化したプログラム全体のプログレスバーを表示させる

# 並列化したプログラム全体のプログラスバーを表示させる

以前,Pythonのプログラムを並列化による高速化を実装した際に,全体の進捗状況が確認出来たら便利だな~と思って調べたのですが,ググっても日本語記事は出てきませんでした.

出てきても並列処理それぞれの進捗を表示させるみたいなのしかなかった…(なお,並列化した関数から値を返すとなったらなおさら)

なので,自分で実装したコードの例を備忘録として記事にしておこうと思いました.

ここでの並列化は multiprocessing を想定しており,全体としては主に三段構造になっています.
今回は例として0から10までのリストを作って,それらの二乗の値を返すプログラムにしています.
状況によって適宜変更して下さい.

## 使用するライブラリ
~~~python:
from multiprocessing import Pool #並列処理
from tqdm import tqdm
~~~

## 並列化させる関数
~~~python:
def func(param_list):
param_list = [x**2 for

元記事を表示

GCPにDjangoの環境を整えていく02(Cloud SQL)

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

前回作成したGCPの環境にCloud SQLを使ってマネージドなDBサーバをデプロイ。
Django環境を作っていきたいと思います。

前回の記事は以下となります。

https://qiita.com/ohtsuka-shota/items/4fa7cd52421ee5887295

# 環境イメージ
こんな感じの環境になると思います。
恐らくですが、プライベートIPのみを持つSQLサーバをデプロイしようとするとGCPが用意しているVPC(≒GoogleサービスプロデューサーのVPC?GCPが用意しているVPC?)にデプロイされて、そこに対してVPCピアリング等を行って環境を確立する必要があるのかなと思います。

![GCP01-ページ3.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/7a2aa7e3-f42c-be2c-6f12-2a34220e6700.png)

上記のイメージ、特にCl

元記事を表示

Pythonでテキストマイニング【概要】(自然言語処理/MeCab/nlplot)

# 準備・環境構築
## Pythonまわり
* ローカルでPythonを動かす場合:**自由度高い、煩雑**
* **Python**:必須
* **Jupyter Notebook/Lab**:Pythonスクリプトを動かすソフト、(ほぼ)必須
* **Anaconda**:Pythonを動かすためのツールが色々入っているパッケージ(なくても可、あると便利)
* 必要に応じてNode.jsのインストール(Jupyter Labを動かすのに必要だったような)

* クラウドでPythonを動かす場合(Google Colaboratory):**簡単・手軽、自由度低い**
* Google Colaboratoryを使うための設定(ほんの少し)
* Googleドライブの接続

:::note info
**ここでのゴール**
* JupyterかColabを用いてPythonのコードを動かすことができる
* ライブラリをインストールすることができる
* ある程度適切に環境が構築されている
(場合によってはPC内がごちゃご

元記事を表示

OTHERカテゴリの最新記事