Python関連のことを調べてみた2023年08月02日

Python関連のことを調べてみた2023年08月02日

[Atcoder] K – Stones [DP まとめコンテスト]

問題 : [dp-k Stones](https://atcoder.jp/contests/dp/tasks/dp_k)

# 結論

`dp[x]` := x個の石でゲームして、最初に行動するプレイヤーが勝つことができるか

“`python
def getInts():
return map(int, input().split())

def getIntsArray():
return [int(x) for x in input().split()]

N, K = getInts()
choices = getIntsArray()
dp = [False] * (K + 1)
for i in range(K):
for choice in choices:
if i + choice <= K: dp[i + choice] = dp[i + choice] or not dp[i] if dp[K]: print("First") else: print("Second") ``` # 思考順序 何を

元記事を表示

numpy.sumのaxisは-1を指定した場合はどう言う意味?

`numpy.sum`関数において、`axis`パラメータに`-1`を指定すると、最後の次元に沿った和を計算します。

例えば、もし2次元配列(行列)を持っている場合、`axis=-1`は各行の要素の和を計算します。3次元配列の場合、それぞれの2次元スライスの各行の要素の和を計算します。このように、`axis=-1`は常に最後の次元に沿って和を取ります。

2次元配列の例:

“`python
import numpy as np

arr = np.array([[1, 2], [3, 4]])
result = np.sum(arr, axis=-1)
print(result)
#[3, 7]
“`

3次元配列の場合:

“`python
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
result = np.sum(arr, axis=-1)
print(result)
# [[3, 7],
# [11, 15]]
“`
この方法で、配列の形状が変わっても同じ次元に対して和を取るコードを書くことができます。

元記事を表示

MiDaS v3.1やーる(Windows11、Python3.10)

# はじめに

私のお気に入りのガジェットraytrekのノートPCでMiDaS v3.1やっていきまーす

https://github.com/isl-org/MiDaS

# 開発環境
– Windows 11 PC(i7-12700H、RAM 16GB、RTX3060 Laptop 6GB)
– Python 3.10.11
– PyTorch 1.13.0
– CUDA Toolkit 11.7

# 導入

1.クローンします

2.CUDA Toolkit 11.7のインストール
https://developer.nvidia.com/cuda-11-7-0-download-archive?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_network

3.PyTorchのインストール

https://pytorch.org/

~~~
pip i

元記事を表示

“Pythonのforループ内でリストを更新する時の注意点:上書きと追加の違い”

Pythonでループ内でリストを更新する際には注意が必要です。特に、上書き(=)と追加(extend)の違いは重要です。次の2つのコードスニペットを考えてみましょう。

1つ目のコードスニペット:

“`python:ex1.py
for i in range(5):
# iの2乗の値をリストに格納
squares = [i ** 2]
print(squares)
“`
2つ目のコードスニペット:

“`python:ex2.py
squares = []
for i in range(5):
# iの2乗の値をリストに追加
squares.extend([i ** 2])
print(squares)
“`

これらのコードは、ループの各ステップで数値の2乗を計算し、それをsquaresリストに格納しようとしています。しかし、これらの振る舞いは全く異なります。

1つ目のコードでは、ループの各ステップで新しい2乗の数値が計算され、それが新しいリストとしてsquaresに上書きされます。その結果、squaresにはループの各ス

元記事を表示

Scikit-learnの線形回帰モデルで機械学習を体験してみる。

データ分析をとにかくやりたい

データ分析をやりたい。
これまでJavascriptやPHPなどWeb開発の言語を学んできた中で、
最も楽しかった言語がPythonであり、Pandasの授業だ。

『データ分析のキャリアは文系で未経験だと難しい。』

そう言われても、とにかくやってみたかった。
データの前処理やグラフ化はなんとなくできたので、機械学習をひとまず触ってみる。

扱うデータは年齢、性別、人種、職業、学歴、国籍、経験年数、給与が入っているデータ。
給与の大小はこのようなものにどれくらい相関があるのかを知りたくなった。
(おそらく経験年数、年齢が相関としては大きいのではないかと考えている。結果がたのしみ。)

①必要そうなライブラリを読み込んでおく

今回は下記が使えそうなので、先に下記を読み込む。
役割はこんな感じ。

![スクリーンショット 2023-08-01 23.16.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3330320/0a32eb37-0e74

元記事を表示

【Kaggle】初心者がKaggleをGoogleColaboratory上で実行したら躓いた話

# はじめに
今回、初投稿ということで

「KaggleをGoogleColaboratory上で実行したら躓いた話」をしたいと思います。

この記事が、私のようなKaggle初心者の助けになれば幸いです。

# Kaggleとは
Kaggleは、データサイエンスおよび機械学習のコンペティションプラットフォームです。
![Kaggle](https://zeeshanusmani.com/wp-content/uploads/2019/10/Kaggle3.png)
[Kaggle(https://www.kaggle.com/)](https://www.kaggle.com/)

データサイエンティストや機械学習エンジニアがデータセットを提供し、解析や予測モデルの作成に取り組むことができます。ユーザーは共同でプロジェクトに参加したり、スコアを競い合ったりしながら、問題解決能力を向上させることができます。

また、Kaggleは知識共有のプラットフォームとしても機能し、豊富なデータセットやノートブック、コンペのソリューションなどが利用可能です。

現在(2023/08/01)、

元記事を表示

PytorchのDataLoaderから、画像ではなくラベルやパスのみを取り出したい

# はじめに
Pytorchを使った画像AIを構築する際、`torch.utils.data.DataLoader`により`batch_size`ごとにまとめられた画像データの呼び出しを行う。
ただ、学習中にどの画像がどれだけの回数使われたのかなど、調べたい場合などがある。
そこで今回、`torch.utils.data.DataLoader`から画像である`torch.tensor`ではなく、クラスのラベル並びに画像のパスを出力する方法について書く。

# 方法
クラスのラベル並びに画像のパスを取り出す`torch.utils.data.Dataset`を用意し、`torch.utils.data.DataLoader`に入れてあげればOK。
今回、`Dataset`には、それぞれの画像のパスとラベルが2次元の`list`で格納されているものを渡す場合を考える。
“`python
list_data = [[‘path/to/img_0’, ‘label_0’],[‘path/to/img_1’, ‘label_1’], …]
“`
## `Dataset`を実装
`Data

元記事を表示

gradio ChatIterfaceとllama-cpp-pythonで、Llama2との対話型チャットボットを作成する

#

# はじめに
[gradio](https://www.gradio.app/)の[ChatIterface](https://www.gradio.app/docs/chatinterface)と[llama-cpp-python](https://github.com/abetlen/llama-cpp-python)を使って、[Llama2](https://github.com/facebookresearch/llama)と対話できるチャットボットを作成します。

# 環境
– Thinkpad X1 carbon(CPU:Core i7 8th Gen, Mem:16GB)
– Windows 10 home
– Visula Studio 2017
– cmake 3.27
– Python 3.8.10
– llama-cpp-python 0.1.77
– gradio 3.39.0

# 環境構築
## gradioインストール
今回は ChatInterfaceを利用します。[changelog](https://www.gradio.app/change

元記事を表示

【OpenCV】4.6.0から4.7.0でのArUcoモジュールの更新箇所抜粋

# はじめに
OpenCVを使用してArUcoマーカの認識をしようとしたらバージョンの更新によって関数名の更新があったのでまとめます。
Web上に公開されているサンプルプログラムでも同じバージョンでないと基本的に動かないので辞書的な使い方で参考になれば幸いです。

:::note
ここでは、ArUcoマーカの生成、認識、描画等**最低限**の関数のみ記載することとします。
:::

より詳細な情報は公式ページを参照してください。

https://docs.opencv.org/4.7.0/index.html

# バージョン
サンプルプログラムは、`**4.7.0**`で動作確認したものです。

# サンプルプログラム
## マーカ画像の作成
マーカ画像の周りに余白を設けるために少し工夫しています。
(白い画像のimgを用意してそれに重ね合わせている。[参考](https://rtc-fukushima.jp/technical/5892/))

“`Python
#!/usr/bin/env python3
# coding: utf-8

import cv2
import

元記事を表示

社内教育で簡単な汎用streamlitアプリ作成する

# まずは自己紹介
初めまして。某化学メーカーに勤務していながら、AIやプログラミング、AWSによるインフラ関係の業務をやっています。
バックグラウンドは生粋の化学っ子でしたが、

上司「○○君。パソコンできる?」
僕「まあ、検索したりWordやパワポあたりなら…」
上司「いいね!じゃあAIやってみようか!」
僕「阿保か?(わかりました!!!)」

というわけで、化学メーカーに研究職として入社するも、入社2年目にしてジョブチェンジを果たしました。
と言っても、最初の1年は敬遠し続けてたので、実際にハマるのはその1年後でしたが…
AIと言っても、機械学習のモデルをpythonで書いたり、AWSのsagemakerを使ってモデル作ったりする程度です。
他には、AWSのEC2やECS、VPCを使用したWebアプリケーションの実装らへんを最近手掛けているところです。
そんなこんなで、かれこれ1年2か月程度のAI・プログラミング歴となりました。

# この記事の目的
昨今、AIの進化が止まらず、たくさんの企業でAIを業務に取り入れる動きが見られます。
その競争に負けないためには、AIに対して抵抗

元記事を表示

Jupyter labの初期表示ディレクトリ変更

# この記事について
Jupyter labを起動した際に初期表示されるディレクトリを変更したい。
そのための最小限の作業を記した、備忘のための作業メモです。
必要な作業は以下2点です。

1. 設定ファイル(jupyter_lab_config.py)の作成
1. デフォルト表示のディレクトリの変更

# ①設定ファイル(jupyter_lab_config.py)の作成
まだ、設定ファイルが作成できていない場合には、設定ファイルを作成します。
コンソールにて下記を実行

“`bash
$ jupyter-lab –generate-config

Writing default config to: /home/XXXXXX/.jupyter/jupyter_lab_config.py
“`

なお、設定ファイルが存在する場合には以下のような表示となります。
設定ファイルが既存の場合この手順①は不要です。

“`bash
Overwrite /home/XXXXXX/.jupyter/jupyter_lab_config.py [y/N]
“`

# ②デフォルト表示

元記事を表示

from ABC301 to ABC310 (A, B)

# はじめに
備忘録ではありますが、解法や変数名、書式にはこだわっています。
よりよい書き方があればご指摘ください。
Python独自の文法も、読みやすさを優先しながら使用します。

# A
## ABC301
https://atcoder.jp/contests/abc301/tasks/abc301_a
“`python
n = int(input())
s = input()

# 勝つために必要な勝利数
need = n // 2 if n % 2 == 0 else n // 2 + 1
count = {“T”: 0, “A”: 0}
for player in s:
count[player] += 1
if count[player] == need:
print(player)
break
“`

## ABC302
https://atcoder.jp/contests/abc302/tasks/abc302_a
“`python
a, b = [int(x) for x in input().split()]

元記事を表示

python maya opionVar

Set an optionVar
“`python
import maya.cmds as cmds

option_var_name = “myOptionVar”
option_var_value = 42

# Set the optionVar
cmds.optionVar(iv=(option_var_name, option_var_value))
“`

Get the value of an optionVar:
“`python
import maya.cmds as cmds

option_var_name = “myOptionVar”

# Get the optionVar value
option_var_value = cmds.optionVar(q=option_var_name)
print(option_var_value) # Output: 42
“`

Check if an optionVar exists:
“`python
import maya.cmds as cmds

option_var_name = “myOpt

元記事を表示

SQLAlchemyで取得した値を辞書型で取得したい

# 【前置き】
・案件で作業中、「SQLAlchemy」を使ってDBのVIEWの値を辞書型(dict)で取得し扱いたかったときに良い記事があまりなかったから備忘録として残すことにした。
※また基本的に「SQLAlchemy」はORMを使って値を取得するのが主流だが今回はSQLを直接実行して辞書型で取得する

# 【やること】
SQLAlchemyライブラリで取得したVIEWの値を辞書型として扱うようにする

# 【必要なもの】
#### 〇環境
* Python 3.11
* SQLAlchemy 2.0.13
* 使用DB:「SQL Server 2017 Standard」

# 【ソース】

* 通常は`session.excute().all()`で取得すると実行結果の値(全件)のみを取得してくる
“` diff_c
import sqlalchemy
from sqlalchemy import Engine, Row, create_engine
from sqlalchemy.orm import sessionmaker

def __init__(self, con

元記事を表示

Reactで音声認識してChatGPTに質問する

# 目次
[成果物](#成果物)
[フロントエンド(Next.js)の実装](#フロントエンドの実装)
[エラーが出る場合](#エラーが出る場合)
[ローカル開発でマイクがONにできない場合](#ローカル開発でマイクオンにできない場合)

# 成果物
無音なのでわかりづらいが、自分の声がしっかり音声認識されている。
![speechAI.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526938/bfd4217b-ce73-2a98-f9ba-99d8c1b3ce6a.gif)

# フロントエンドの実装
音声認識には[こちらのライブラリ](https://github.com/JamesBrill/react-speech-recognition)を使う。
“`tsx
import SpeechRecognition, {
useSpeechRecognition,
} from “react-speech-recognition”;

export const SpeechButton =

元記事を表示

djangoで、事前にログイン・ユーザー認証をしていないと使用できないRESTAPIを作成する。

# 結論
`djangorestframework`を使用して、セッション認証を通すように実装します。そうすることで、事前にブラウザ上でログインをしていないと使用できないRESTAPIを作成できます。

# 前提
– djangoでWebアプリを既に作成している。何かしらの方法でログイン・ユーザー認証を実装できている状態であるとします。
– 使用モジュールの各バージョンは以下です
– Django 3.2.20

# 作成手順
1. pipで下記のモジュールをインストールします。
“`
pip install djangorestframework
pip install markdown
pip install django-filter
“`
1. `settings.py`に下記のコードを追加します。
“`settings.py
# …
INSTALLED_APPS = [
# …
‘rest_framework’, # 追加
# ..

元記事を表示

【深層学習】TabNetの使い方

# 概要
TabNetはニューラルネットワークをベースとしたモデルで、kaggleなどのテーブルデータ予測でよく用いられます。
TabNetの特徴を簡単にまとめると以下のようになります(参考サイト[1]より引用)。

> – **ディープラーニングをベース**としたモデル。
> – **特徴量の選択や加工などの前処理が不要**で、end-to-endで学習することができる。
> – **アテンション・メカニズム**を使い、各決定ステップ(decision step)において使用する特徴量を選択する。アテンション・メカニズムにより**解釈性が向上**し、重要な特徴量をうまく学習することができる。
> – 全サンプル共通ではなく**サンプルごとに重要な特徴量を選択**する。
> – いくつかの特徴量をマスクし、それを予測するという**事前学習を行う**。

今回は、このTabNetをPythonライブラリ「pytorch-tabnet」で実装する方法を紹介します。

# 使用するデータ
サンプルデータとして、SIGNATE練習問題の[国勢調査からの収入予測](https://signate

元記事を表示

DjangoRestFrameworkで、追加の情報をレスポンスに含める

:::note info
間違いがあるかもです。修正点は教えていただくと幸いです。
:::
## :v: 使用しているライブラリのバージョン
– Django==4.2.3
– djangorestframework==3.14.0
– djangorestframework-api-key==2.3.0
## したいこと
modelに記述されていない、追加の情報をquerysetに含めたい。
## DRF(Django Rest Framework)を使わないとき
viws.pyにこのように書くだけで実現できる
“` views.py
class userView(ListView):
template_name = “notes.html”
# 一回で読み込む量
paginate_by = 10

def get_queryset(self):
username = self.kwargs[“user”]
user = User.objects.get(username=username)
noteL

元記事を表示

特徴量エンジンKaskadaリファレンス〜Pythonでのクエリ実行

# はじめに

先日、以下の記事を発表しました。

https://qiita.com/yoshiyuki_kono/items/7dc7bdad5e02ff986f5d

公式ドキュメントの学習過程の記録として、以下の記事をまとめてみました。

本稿情報のソースとして、下記ドキュメントを参照ください。

https://kaskada.io/docs-site/kaskada/main/developing/queries.html#querying-with-python

## Pythonでのクエリ実行

Pythonプログラムでは、以下のようにクエリを作成し、実行することができます。

“`python
from kaskada import compute
from kaskada.api.session import LocalBuilder

session = LocalBuilder().build()

query = “””{
time: Purchase.purchase_time,
entity: Purchase.customer_id,

元記事を表示

インポート “XXX” をソースから解決できませんでした(PylancereportMissingModuleSource)にサヨナラしよう

## 起きていること
VSCodeで拡張機能Pylanceを導入すると使用するパッケージの格納箇所によってはimport文で次のメッセージが表示されることがある。

`インポート “XXX” をソースから解決できませんでした(PylancereportMissingModuleSource)`
このメッセージは実行可能であっても表示されることがある。

今まで特に実行に影響ないためそのままだったがソースを開いていつも波線が出ているのは気持ちが悪いので対応しようと思う。

## 対応時の環境

Python 3.11.4
VSCode 1.80.2
Pylance v2023.7.40

## 対応内容
今回仮想環境を導入していてフォルダ構成は次のようになっている。
関係のないディレクトリ、ファイルは省略している。

“`
.
├── .vscode
│ └── settings.json
├── venv
│ └── Lib
│ └── site-packages
│ └── pandas
└── example.py
“`

example

元記事を表示

OTHERカテゴリの最新記事