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

Python関連のことを調べてみた2022年08月24日
目次

pyenvとvenvでPythonの仮想環境を作ろう!(Windows11)

# はじめに
venvで仮想環境を作ろうとした際に「使用するPythonのVersionも指定出来たらいいな」と思い調べてみたところ、pyenvでPythonのVersionが切り替えられることを知りました。
せっかくなので備忘録としてまとめておきたい…

そこで今回は「**新規プロジェクト用に、指定したVersionのPythonの仮想環境を構築する**」というストーリーをイメージしながら実践します!

# 目次
* 事前知識
* pyenvとは
* venvとは
* 実践
* ステップ① pyenvで使用するPythonのバージョンを指定
* ステップ② venvで仮想環境を作成する
* 最後に
* 参考文献

# 事前知識
ここで使用する「pyenv」と「venv」がそれぞれどういう役割を持つのかまとめます。
※名前がそっくりでなのでここで違いをはっきりさせます。

## pyenvとは
>pyenv lets you easily switch between multiple versions of Python.
>訳:**pyenvを

元記事を表示

【Python】陰陽座『廿弐匹目は毒蝮』をシミュレート

## 概要

陰陽座の楽曲『廿弐匹目は毒蝮』の状況を、Pythonでシミュレートしてみました。

前回の投稿では、「ほんのわずかな確率でも、繰り返していれば起こる」ことをシミュレーションしました。理論上の数値と実際の結果を比較してみるのが楽しかったです。

https://qiita.com/AnPanda/items/ae3fbd9cee2248a7abb5

他のネタでもやってみようと思い、この曲のことを思い出しました。

https://www.uta-net.com/movie/219717/

### シチュエーション

> 「この茂みから100回に1回、もしくは1%の確率で毒蛇が出る」と言われたとします。人によりますが、これは概ね「ではこの1回は大丈夫だろう」と思える確率だと言えるでしょう。しかし、確率1%が持つ本当の意味は“100回やれば必ず1回出る”ではありませんし、逆に“100回やるまでは出ない”という保証もまったくありません。そういうときに限って、中途半端な“22回目”くらいのところで出たりもする…

http://mttb.jugem.jp/?eid=1139

元記事を表示

Stable DiffusionをGoogle Colaboratory上で動かして神絵ガチャを回してみる

## はじめに

最近神絵生成AIが話題ですね。
絵描きの端くれとしてこの波に乗り遅れるわけにはいかない!ということで、つい最近公開された [Stable Diffusion](https://github.com/CompVis/stable-diffusion) を [Google Colaboratory](https://colab.research.google.com/) (以下Google Colab)上で実行して遊べるようにしてみました。 :paintbrush:
[こちら](https://github.com/CompVis/stable-diffusion#diffusers-integration) に記載されている [diffusers library](https://github.com/huggingface/diffusers/tree/main#new–stable-diffusion-is-now-fully-compatible-with-diffusers) を使用してサクッと動かすのがゴールです。

以下環境構築をしてコードを動かすまでのま

元記事を表示

【Python】リストに追加した値が変わってしまう【参照渡し・ミュータブル】

# はじめに

プログラミング初学者です。Pythonで多次元リストを作成した際に学んだことを復習のためまとめました。はじめに私が書いたコードの誤りを訂正し、次になぜそれが起こったのかを(軽く)説明します。解決に時間がかかってしまったので、同じ境遇の方が早く答えに辿り着く助けになればと思いつつ、詳しい説明はほかの方にお任せしてしまいました。初学者の限界をお許しください。

# 環境

– Python 3.10.5

“`bash
$ python –version
Python 3.10.5
“`

# 発生した事象

“`python
[[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4]]
“`

上のようなリストを作成したく、次のようなコードを書きました。

“`python
result_list: list[list[int]] = []
num_list: list[int] = []

for num in range(0,5):
num_list.append(num)
resu

元記事を表示

colaboratoryでstr改行内の改行コード(\n)が削除できないときの対処法

**`str.replace(‘\n’,”)`や`str.strip()`などで改行コードが削除できると思っていましたがうまくいかず困りました。**

使い方が違う可能性もありますが、よく知られているやり方でやってうまくいかなかったので書き記しておこうと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173847/cc06ac96-676c-1ab2-17ca-33b6e7419c89.png)
(↑↑なぜ削除してくれないのか?)

原因は不明ですが、一度改行コードでsplitし、再結合させれば解決できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173847/a99f71c7-2e10-cad6-b9c2-fdaf96bf187f.png)

“`.py
out = ”.join(str.split(“\n”))
“`

同じ症状に困った

元記事を表示

【numpy】np.ix_を使った任意の格子点の要素を抜き出して配列を作成する方法

# 概要
numpyを使っていると任意の格子点の要素を抜き出して配列を作りたい場合がある。そんなときに便利なのが、[“numpy.ix_“](https://numpy.org/doc/stable/reference/generated/numpy.ix_.html)である。この“numpy.ix_“を使った方法を紹介する。

# 実装
Google Colabで作成した本記事のコードは、[こちら](https://colab.research.google.com/drive/1i23hqWnZOf644pAzzD2rGsOkvAfxyxKU?usp=sharing)にあります。

“np.ix_“の入力は、1次元のシーケンスで各シーケンスは整数型またはbool型である必要がある。bool型シーケンスの場合は、“np.nonzero(boolean_sequence)“に等しく、つまり、シーケンスの“True“に対応したindexの格子点が抜きだされる。
“np.ix_“の出力は、N次元の配列で、Nは入力シーケンスの数に対応する。
使い方は公式ドキュメントに

元記事を表示

Lennard-Jones Potentialをプロットしてみたよ

# ペアポテンシャル
化学の勉強をしているとある原子に働く力だったりエネルギーを知りたいなって時があります。ある一つの原子が感じるポテンシャルは、他の原子一個からの個々のポテンシャル$ \phi_i$を考えて、その足し合わせが原子が感じる全ポテンシャル$ \Phi$としていいよねっていうのがペアポテンシャルの考え方です。

$ \Phi = \sum_{N} \phi_i$

$ \phi_i$が$i$番目の原子から受けるポテンシャルで系中の$ N$個の原子分足し合わせています。
静止している原子に関してはポテンシャルがそのまま原子のエネルギーとしていることが多いと思いますし、エネルギーの位置微分がその原子にかかる力$ F$と考えられます。

$ F = \frac{\delta}{\delta r} \Phi$

原子のポテンシャルがわかっちゃえば、エネルギーも加わる力もわかって便利ですね。ペアポテンシャルの中でとりわけ有名なのがLennard-Jones potentialです。レナードジョーンズポテンシャルって読みます。

# Lennard-Jones potential

L

元記事を表示

Python超入門

### 基礎の振り返り
Pythonチュートリアルにて基礎の復習。
### 数値
整数はint型、小数点を伴う数はfloat型
“`python
>>> 2 + 2
4
>>> 50 – 5 * 6
20
>>> 8 / 5 #常に浮動小数点数を返す
1.6
>>> 17 // 3 #切り下げ除算は小数点以下を捨てる
5
>>> 17 % 3 #剰余を返す
2
>>> 5 ** 2 #5の自乗
25
>>> 2 ** 7 #2の7乗
128
# = で代入
>>> width = 20
>>> height = 5 * 9
>>> width * height
900
# 演算対象の方が混在していた場合、整数は浮動小数点数に変換される
>>> 4 * 3.75 – 1
14.0
“`
### 文字列
引用符はシングルクォートorダブルクォートを使用できる。
バックスラッシュでクォート文字のエスケープができる。
“`python
>>> ‘spam eggs’ # シングルクォート
‘spam eggs’

# シングルクォートは\でエスケープするかダブルクォートを使う
>>>

元記事を表示

【競技プログラミング】個数制限付きナップサック問題をやってみた【組合せ最適化】

# 1.初めに
・アルゴリズムを学ぶために、競技プログラミングを始めました。
・AOJのコースをやっていくので、その備忘録を残します。

https://qiita.com/kindamu24005/private/12cb3b84cb7a57167c8b

・前回は0-1ナップサック問題Ⅱを解いたので、今回は「個数制限付きナップサック問題」を解いていきます。

# 2.個数制限付きナップサック問題

https://onlinejudge.u-aizu.ac.jp/problems/DPL_1_G

## 2.1問題
価値が $v_i$ 重さが $w_i$ であるような $N$ 種類の品物と、容量が $W$ のナップザックがあります。

次の条件を満たすように、品物を選んでナップザックに入れます:

・選んだ品物の価値の合計をできるだけ高くする。
・選んだ品物の重さの総和は $W$ を超えない。
・$i$ 番目の品物は $m_i$ 個まで選ぶことができる。←New!!

価値の合計の最大値を求めてください。
### 入力
1行目に2つの整数 $N$、$W$

元記事を表示

Apple SiliconでPytorchを動かしてみる M1MAX vs NVIDIA GPU

こんにちは、ドイです。
Macでディープラーニングの勉強をすべく記事を書きためていこうと思っています。
今回はPytorchでのMacのGPU利用と、性能確認を行います。

## PytorchでMacのGPUを利用する
PytorchがM1チップなどApple Silicon MacでGPUの利用が可能となりました。

Introducing Accelerated PyTorch Training on Mac
https://pytorch.org/blog/introducing-accelerated-pytorch-training-on-mac/

>PyTorch v1.12 release, developers and researchers can take advantage of Apple silicon GPUs for significantly faster model training.

DeepLでの翻訳
>PyTorch v1.12では、開発者や研究者はAppleのシリコンGPUを活用し、大幅に高速なモデルトレーニングを行えるようになります。

元記事を表示

(小学生向け・Python)モジュールを使ってみよう

# フォートナイトのドラゴンボールコラボ、バリアツくね!?
ここんとこフォートナイトでかめはめ波ばっかり打ってるリッキーです。打っただけで満足するので、ビクロイ全然取れてません。かめはめ波のためにインゴット全部使い果たしました。

# んなことたぁどうでもイイのよ!!
今日も元気にpythonやってきましょう!

# Python の便利な機能を使い倒そう!
これを読んでるほとんどの人がpythonが最初に勉強する言語だと思うので、他のプログラミング言語を知らない人が多いと思います。他言語と比較したときのpythonのいいところは
・文法がシンプルで簡単
・プログラムの量が少なくて済む
などありますが、特にすごいポイントは
**・pythonで用意されてる機能や、python用に作られている便利な機能がたくさんある**
ことです。今回はpythonで使われる便利な機能のほんの一部を紹介していこうと思います。

# Pythonにもとから備わってる標準機能=「モジュール」
pythonには、for文やif文などのプログラミングの基本的の機能以外

元記事を表示

Python小技集 – #2 多次元リストの平坦化 (flatten)

こんにちは!beatbox4108です。
今日はPythonで多次元リストを平坦化 (flatten)する方法について説明していきます。

# まず平坦化とは?
平坦化とは、簡単に言えば、
“`python3
[
[0,1,2,3,4],
[5,6,7,8,9],
[10,11,12,13,14]
]
“`

“`python3
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
“`
のようにネストされたリストのネストを外すような操作です。

このような操作を行う方法はいくつかあります。
# 1.sum関数を使う方法
pythonのsum関数には初期値が設定できるので、その初期値に`+`演算をする原理で合成してしまおうという魂胆です。
“`python3
l=[[0,1],[2],[3,4,5]]
print(sum(l,[]))
“`
“`python3
[0,1,2,3,4,5]
“`
:::note warn
第二引数にリストを設定するのを忘れないようにしましょう。
:::
# 2. itertools.chain

元記事を表示

駆け出しプログラマのAtCoder日記 2日目

# はじめに
はじめまして、SLOTREと申します。
最近、pythonのお勉強をはじめたばかりの駆け出し君です。
作りたいものもあるけれど、まずは基礎力をつけるために・アルゴリズムを理解するためにAtcoderで勉強をはじめてみました。
ぜひ、こうしたら良いよ!ってアドバイスあれば教えていただけるとありがたいです。

# やってみた問題
人1~人iまでのリストが与えられて、注目する人P(リストの最後に加える)は人1の何世代前ですか?って問題。
人は3人、注目する人をPとすると、人1、人2、人3、Pのリストになって人1はPの3世代前だよ!って答えになる。
正直、この2行を理解するのに結構かかってしまった・・・
もしかして、プログラミング力より国語力高めないといけない・・・?w

・問題文 [B – Ancestor](https://atcoder.jp/contests/abc263/tasks/abc263_b)
N 人の人がいます。N 人の人には人 1, 人 2,…, 人 N と番号がついています。
人 i(2≤i≤N) の親は人 Piです。
ここで、Pi

ひたすら素数を生成するプログラムを書いてみた

アタマの体操がてら、ひたすら素数を生成するプログラムを書いてみた。
# Source
“`prime_num.py
import math
import sys

def check(num, prime_num):
index = 0
if not prime_num:
prime_num = [2]
min_factor = prime_num[index]
max_factor = math.floor(math.sqrt(num))
while min_factor <= max_factor: remainder_big = num % max_factor remainder_small = num % min_factor if remainder_big == 0 or remainder_small == 0: return False else: index += 1 min

AIが画像を作成してくれるStableDiffusionを触ってみた 実行編 ※NVIDIAのGPUがなくて断念

タイトル通りですが、NVIDIAのグラボ(GPU)がないとダメ見たいです。
とりあえずできたところまで記載します。

##### 環境構築がまだの場合以下で環境構築する
https://qiita.com/thithi7110/items/365cbb3fc16899b17aab

##### 1.txt2img.pyを実行
humanというテキストで画像を作成~

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653035/556bc7d9-22ff-d9c1-18b8-73b60aaeb308.png)

エラー cudaのinitでこけてしまった。NVIDIAのGPUが必要とのこと・・。残念
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653035/5b082789-7de4-e4a6-0994-8a2fce2c1b88.png)

AIが画像を作成してくれるStableDiffusionを触ってみた 環境構築

## AIが画像生成してくれる、Python OSSであるSatableDiffusionを使ってみた

###### 1. Anacondaが必要なので[こちら](https://qiita.com/thithi7110/items/fd273fb7ae148b5335bc)を参考にインストール

https://qiita.com/thithi7110/items/fd273fb7ae148b5335bc)

##### 2. githubからstable-diffusionをクローン
github: [stable-diffusion](https://github.com/CompVis/stable-diffusion)

##### 3. Anaconda promptを起動し、ルートフォルダで以下を実行
conda env create -f environment.yaml

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653035/6b7ca02b-8f52-974

特定の年齢まで、あとどのくらいの日にちが残されているかを調べる

# 自分は後どれくらいの時間が残されているのだろう?
先日、30歳まであと何日あるのだろうと考え、それを表示するコードを Pythonで書きました。

ユーザーに生年月日を入力してもらい、20、30、40、50、60歳までの残り日数を表示する。すでに超えた年齢なのであれば、それは表示しない。
# コード
“`
import datetime
# ユーザーに生年月日を入力してもらう。
year = input(“あなたの生まれ年を西暦で入力してください(例:2000):”)
year = int(year)
month = input(“あなたの生まれ月を数字で入力してください(例:1):”)
month = int(month)
day = input(“あなたの生まれた日を数字で入力してください(例:1):”)
day = int(day)

def barthday(x,y,z):
# 20,30,40,50,60歳の誕生日をそれぞれの変数に代入。
day20 = datetime.date(x+20,y,z)
day30 = datetime.date

~/.python_history の場所を変更する

ホームディレクトリに存在する`.python_history`の場所を変更する方法を紹介します.

# この投稿の概要
– `.python_history`は Python の対話モードの履歴を記録するファイル
– デフォルトの設定では,ホームディレクトリに保存される
– ホームディレクトリに dotfiles が多く存在する状況は気持ちが悪い
– 本稿では,`.python_history`の保存場所を変更する方法について紹介

# 環境
– macOS 12.5.1 Monterey (2022 M2 MacBook Air)
– Python 3.10.6 (バージョン管理ツール asdf でインストール)
– zsh 5.8.1 (x86_64-apple-darwin21.0)

本稿では,macOS を対象として説明します.
ですが,Linux においても同様の方法が適用可能だと思われます.

# やること
– 環境変数`PYTHONSTARTUP`にインタプリタ起動時に自動で読み込むスクリプトを設定
– 今回は,`~/.config/python/pythonstart

機械学習で創造的なことに初挑戦 ~C-GAN × MNIST編1~

# はじめに
こんにちは。機械学習を勉強中のナノテクエンジニアです。現在、ナノ光学と呼ばれる分野で期待されている技術として、メタマテリアル(例:ナノパターンで高機能を実現するメタレンズなど)が挙げられます。最近実は、このメタマテリアルの電磁波シミュレーションにどんどん機械学習が取り入れられています。そこで出会ったのが、本ブログで紹介するC-GAN(Conditional Generative Adversarial Network)やオートエンコーダーという概念です。

個人的には、画像やデータの分類、分析にようやく慣れてきた一方、誰でもできる分類や回帰などに物足りなさも感じている今日この頃でした。機械学習でもっとCreativeなことができないか?その点で大きなポテンシャルを秘めるのがGANです。GANは半強化学習的な位置づけの画像生成ネットワークで、**GANにおけるランダムな潜在空間から新しい画像を創造するという過程が、人間の意識が脳のアンテナを介して無からアイデアを生むのと似ていて**、すごく面白い概念だと思います。想像ですが、AIに意識はあるのかを議論する際に案外重要な概念だ

【競プロ】60日でatcoder緑色目指します。

バイク事故での骨折により当分仕事ができないので動けない間プログラミングの勉強しようと思う。
現状ウーバーとバイトで暮らしてて将来どうしようかと思っていた矢先の事故。

前々から興味はあった競技プログラミングをしてせっかくだから目標も建てようと思った。
私は1つの目標のみを期限を決めて頑張るとけっこう楽しいタイプ。

https://qiita.com/e869120/items/f1c6f98364d1443148b3#1-6-%E8%8C%B6%E8%89%B2%E3%82%B3%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3

みんなが見てるであろうこの記事を参考にする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/759966/cc3d8a22-a426-10