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

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

【matplotlib】random_walkでお絵描きしてみた

## はじめに
Pythonのmatplotlibを使用してドリッピングやマーブリングのような画像を出力します.
完全にお遊びです.
(GenerativeAIで画像生成できるってのに何やってんだか…)

## 動作環境情報
– Python 3.12.0
– matplotlib 3.8.1

## 手法
四方八方にランダムに動く線を重ねて重ねて描いてみます.

### ソースコード
“`random_walk_paint.py
import numpy as np
from random import random
import matplotlib.pyplot as plt
from math import *

def random_walk(N):
x, y = 0, 0

x_list=[0]
y_list=[0]
for n in range(N):
theta=2.0*pi*random()
x = x+cos(theta)
y = y+sin(theta)
x_li

元記事を表示

get_poacar_file_folder_abs_path_list.pyの実行ログ

## スクリプトの入出力について

* get_poacar_file_folder_abs_path_list.py[1]

* 入力:COD[1]からダウンロードしたcifファイルを変換したPOSCARファイル約30万件が入ったディレクトリ(:308325件)

* 出力:poscar_abs_path_list.npy, poscar_folder_abs_path_list.npy

[1] https://github.com/k-morii-toridai/scripts_get_poscar_abs_path_list.git

## 実行の詳細ログ
“`terminal
pwd
“`
/mnt/ssd_elecom_black_c2c/scripts_get_poscar_abs_path_list

“`terminal
ls -CF
“`
get_poacar_file_folder_abs_path_list.ipynb* get_poacar_file_folder_abs_path_list.py* old

元記事を表示

【Google Cloud】 Firestoreデータベースにローカルから接続する方法【Python】

# はじめに

 Firestoreは、NoSQLのドキュメントデータベースです。

 この記事では、Google Cloud で Firestore を使い始めるための手順を紹介します。具体的には、Pythonのプログラムを用いてローカル環境からGoogle Cloud上のFirestoreにアクセスを行い、データを格納するところまでを目指します。

* 公式ドキュメント
https://cloud.google.com/firestore/docs?hl=ja

(公式ドキュメントが一番参考になるので、何か困ったら公式ドキュメントを参考にしましょう)

:::note warn
 本記事は、2023年11月17日時点の情報です。
 名前が似ている「**Filestore**」というサービスもありますので、間違えないように気をつけましょう。
 モード選択では、ネイティブモードを選択しています。
:::

# 実施環境

* OS:macOS Ventura 13.5 (M2 mac)
* ブラウザ:Google Chrome 119.0.6045.123(Official Build

元記事を表示

1 つの実数を出力 4 Python3編

次はこれ
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__format_real_number_step4

formatをつかえばいいとおもうけど 変数Mどうやって入れよう。。。と思って
“`py
Arr = input().split()
N = float(Arr[0])
M = str(Arr[1])

print(“{:.} + M + {f}”.format(N))

“`
エラーになった。。。。
どう書けばいいんかわからず調べる。

こうだった。
二重かっこにすればよかったんだ。。。

“`py
print(“{:.{}f}”.format(N,M))
“`

元記事を表示

1 つの実数を出力 3 Python3編

今日はこれ

https://paiza.jp/works/mondai/stdout_primer/stdout_primer__format_real_number_step3

・そもそも[実数って浮動小数点数のことかと思ったら違う](https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0%E3%81%AF%E5%AE%9F%E6%95%B0%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84/#google_vignette)らしい

・とりあえずPythonの型としては整数はint、実数はfloatかdecimal型として出すらしい
 https://pg-chain.com/python-int-float-decimal#google_vignette
 floatかdecimalのどっちを使うかで悩みそうな気がするが。。。

元記事を表示

PyQGISでタイルレイヤのURLを取得したい

# はじめに
この記事は、
**「タイルのURL取得なんて余裕だと思ってたのに、なぜかできない。。。」**
と謎にハマってしまった人(数日前の自分)に向けた記事です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/1ca4e1c8-1d46-305c-cb5b-5c57e7a2d37f.png)

# 予想される検索ワード
以下、この記事を求めているであろう方が入力しそうな
(というか実際に私が必死で検索した)検索ワードです。

QGIS, PyQGIS, タイル, URL, 取得

# 実行環境
– Windows11
– QGIS 3.28

# 忙しい人向けの結論
QGISでタイルレイヤを選択している状態で、Pythonコンソールで以下を実行すれば取得できます。

“`python:Pythonコンソール
# アクティブレイヤ
layer = iface.activeLayer()

# レイヤのソースを取得
src = layer.source()

# ソー

元記事を表示

ホールケーキ,ナイフ2回で3等分

問: 半径1のホールケーキを,ナイフを2回入れて3等分する。

答: 中心から上下(または左右)へ,約$\pm 0.265$離れた点を通り$x$軸($y$軸)に平行にカットする。

この解が適切かどうか,3分割された半月状の部分の面積をシミュレーションにより求めて,真値と比較検証する。

第1象限の一辺の長さ1の正方形内に二次元一様乱数$(x, y)$を$n$組発生させ,$(x, y)$が四分円内にあり,かつ,$y \gt y_{0}$ の点の割合が$\pi/3=1.0471975511965976$になることを確認する。

“`Python
import numpy as np
n = 100000000
x = np.random.rand(n)
y = np.random.rand(n)
print(2*np.mean((x**2 + y**2 < 1)*(y > 0.26493208460277684)))
“`

1.04728812

![fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

【行によって長さが違う二次元配列の表示】すべての行の長さと値が不定な 2 次元配列の出力 Python3編

今日の最終問題
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__variable_array_boss
たとえば、こんなふうに入力が与えられるとすると

10 4
1 2 3 4 5 6 7 8 9 10
2 6 1 1

最初の行は全部の数と、行数
2行目は全部の数
3行めは何番目まで出力するかを示している
つまり、3行目は 2文字まで、6文字まで、1文字まで、1文字まで、というのを表している。
出力は
1 2
3 4 5 6 7 8
9
10
となる。


さて、解いてみたが、最後の最後、一方のループを止めず、一方のループをリセットする方法が見つからずギブアップ。
参考までに私が書いたやつ。

“`py
tmp = input().split()
N = int(tmp[0])
M = int(tmp[1])

values = input().split()
A =[0] * N
for i in range(N):
A[i] = int(values[i])

nums = input

元記事を表示

すべての行の長さが不定な 2 次元配列の出力

今回はこれ
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__variable_array_step4
前回のやつのすべての行の長さが不定であるものを出力せよという問題
たとえば、

2 4 3 1
というふうに出力されたら
1 2
1 2 3 4
1 2 3
1
というふうに出力しないといけないという問題。
前回の応用なんだけど、簡単ではある。
ただし、Nを全く使っていない。

“`py
N = int(input())
M = input().split()
for j in M:
j = int(j)
for i in range(1,j+1):
if i == j:
print(i)
else:
print(i,end=” “)

“`

なので、ちょっと考える。
すべての行の長さが不定な2次元配列の出力ということから、
おそらく、最初に配列を作っておいてそこから条件に沿って出力するというやり方ではないか?

元記事を表示

炭酸イオンを1つの点に置換した結晶構造の作成ログ

# 最終目標設定
既存の結晶構造から,炭酸イオン(CO32-)を1つの点に置換した新しい結晶構造を作成する.

## 今回行ったことの流れ
1.約30万個のPOSCARファイルの中から,元素種C,Oを含むものを抽出する.
※ COD(Crystallography Open Database[1])から得たcifファイルをcif2cell[2]を用いて,変換した.
2. 1. で抽出したPOSCARファイルから,各原子について1.7Å以内の隣接原子がリスト化されたPOSCAR.nnlist(というテキストファイル)を作成する.
※ 炭酸イオンの熱化学半径は1.64Å[3] 
3. 2.で得たPOSCAR.nnlistから,隣接原子のリストに,Cを1つかつOを3つ含む,POSCAR.nnlistを抽出する.
4. 3.で抽出したPOSCAR.nnlistに対して,Cを1つかつOを3つ含む原子団のxyz座標を,各々の原子座標の相加平

元記事を表示

直角三角形の出力 (paizaランク D 相当)

今日の問題はこれ。
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__variable_array_step3

出力された数字に従って下記の様に出力する問題
たとえば4だったら
1
1 2
1 2 3
1 2 3 4
というふうに出力する。
これが直角三角形に見えるように出力するという意味

今までの積み重ねから、難しくはなかった

“`py
N = int(input())

for i in range(1,N+1):
for j in range(1,i+1):
if j == i:
print(j)
else:
print(j,end=” “)
“`

元記事を表示

mod


[picoCTF][Cryptography][basic-mod1]

# Writeup
* 解法が書いてあるので、翻訳ソフトで翻訳。
DeepLって分かりやすい日本語に変換してくれます。
![screenshot 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160736/0f52be36-8979-6367-431c-f6f92aeccbcf.png)
![screenshot 3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160736/36bb1078-1b42-b63a-a8f1-527118c2da89.png)

* BingChatに作ってもらったプログラムを微修正。
~~~:python
# 入力データ
numbers = [128, 322, 353, 235, 336, 73, 198, 332, 202, 285, 57, 87, 262,

元記事を表示

【langchain】TFIDFRetrieverのマージ

# 概要
異なるコーパスから作られた複数のTFIDFRetrieverを1つにする方法を検討しました。

# 背景
TFIDFRetrieverはlangchainでキーワード検索をするときの有用な選択肢の一つです。
開発途中で検索対象の文書を追加する場合など、TFIDFRetrieverの更新やマージをしたくなることがあります。

FAISSRetrieverなどDenseな埋め込みに基づくRetrieverの場合はdocstoreとembeddingをただ拡張すればよいのですが、TFIDFなどSparseなRetrieverの場合、単語のIDやIDF値がコーパスごとに決定されるため、単純にマージはできません。そこで方法を考えました。

(注:キーワード検索用のSparseなRetrieverとしては、BM25Retrieverのほうがよりメジャーなのですが、BM25Retrieverは内部で使用されているrank_bm25の扱いに習熟できていないため、今回はTFIDFRetrieverを対象とします。)

一番シンプルなのは、複数のデータセットをマージして、TFIDFRetriev

元記事を表示

数値を異なる長さで 2 行出力 Python3編

続いてこちら
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__variable_array_step2

数値 N と M が与えられるので、 1 行目には N 個、 2 行目には M 個の数値を出力する、という問題。

私はこちらの回答.

“`py
arr = input().split()
for i in range(1,int(arr[0])+1):
if i == int(arr[0]):
print(i)
else:
print(i,end=” “)
for j in range(1,int(arr[1])+1):
if j == int(arr[1]):
print(j)
else:
print(j,end=” “)

“`
可読度をあげるなら、
問題にかかれているように

“`py
arr = input().split()
N = int(arr[0])
M = int(arr[1])
“`

元記事を表示

【Python】filter関数で第一引数に None / 常にTrueを返す関数 /常にFalseを返す関数 を指定してみる

# 概要
Pythonの`filter`関数で、以下のケースではどのような結果になるのだろう?と思ったので実施してみました。

– 第一引数(`function`)に`None`を指定した場合
– 第一引数(`function`)が常に`True`を返す場合
– 第一引数(`function`)が常に`False`を返す場合

## サンプルコード

“`py
def is_even(n):
return n % 2 == 0

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(is_even, numbers))
print(even_numbers)

# 出力結果: [2, 4, 6, 8, 10]
“`

`filter()`関数は、第一引数に指定した関数(条件)に合致する要素を残します。
なので、上記の場合、偶数の要素のみが出力されます。

第一引数に指定したものでフィルターしてくれる、というわけです。
しかし、この考えだと少し違うことがわかりました。
正確にいうと、`is_

元記事を表示

四旬節第2金曜日とイースターとペンテコステの日付を求めるプログラム

四旬節第2金曜日とイースターとペンテコステの日付を求めるプログラムです。

`chmod +x pe.py`として実行して下さい。

pythonで書かれています。

“`pe.py
#!/usr/bin/python3
import datetime
from dateutil.easter import *

for i in range(1000,3000):
ed=easter(i).toordinal() # イースター
xd=ed-30 # 四旬節第2金曜
pd=ed+49 # ペンテコステ
x=datetime.datetime.fromordinal(xd).date()
z=datetime.datetime.fromordinal(ed).date()
t=datetime.datetime.fromordinal(pd).date()
print(“Lent 2nd Friday:”,x,”Easter:”,z,” Pentecost:”,t)
“`

### 実行結果

“`
Lent 2nd Fri

元記事を表示

指定したパスで経路を探索する

# はじめに
ツリー構造になっているオブジェクトに対して、
指定したパスが存在するかどうか判定する処理を施す際になかなかいい処理が思い浮かばず…
何とか絞り出して、処理を実装することが出来ました…
## ツリー構造とは
枝分かれになっているデータ構造のことを言います。

上の部分が「親」または「根」といい、
そこから枝分かれで生えているのが「子要素」になります。

それぞれの領域を「ノード」、それらを繋いでいるのを「エッジ」といいます。

そして、子要素の無いノード、要は末端のノードは「葉」「リーフノード」と呼ばれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2641311/739e775c-a87b-6afa-6c1f-4a9bddf91a09.png)

https://wa3.i-3-i.info/word1257.html

## ソース

“`python
def search_path(_module, path):
path_parts = path.

元記事を表示

N 個の文字を半分ずつ出力 (paizaランク D 相当)

今日の問題はこれ
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__variable_array_step1

そんなに難しくない問題だと思って、
実際に下記のような回答を考えたのだが
`print(n+1)`のときにどうしても空白ができてしまうらしい。
print単独だと改行されるのは知っているが、空白になるのはなぜかわからず。

“`python
N = int(input())
for i in range(N):
if i+1 == N/2:
print(i+1)
else:
print(i+1,end=” “)
“`
仕方がないので下のようにprintして吐き出してもらった

“`python
N = int(input())
for i in range(N):
if i+1 == N/2:
print(i+1)
print(‘改行’)
else:
print(i+1,end=” “)

元記事を表示

[python] Anaconda/Miniconda環境の削除

# 最初に
conda環境とpip環境は共存しないため、pip環境導入時にはアンインストールが必要となる。
環境変数やVSCodeのsettingsが問題になる可能性があるため、pip環境導入前に実施した方がよい。

|環境|詳細|
|—|—|
|OS|Windows11|

# anaconda-cleanの実行
まず、Anaconda Promptで削除用のパッケージをインストールする。

“`:Anaconda Promp
conda install anaconda-clean
“`
インストール後、コマンド実行する。

“`:Anaconda Promp
anaconda-clean –yes
“`

# プログラムのアンインストール
「Windowsの設定」→「アプリ」→「アプリと機能」から、Anacondaを指定する。
「プログラムのアンインストール」を実行する。
実行完了後、anaconda関連のディレクトリが削除されていれば一旦完了。

https://insilico-notebook.com/conda-uninstall/

# 設定保存ディレ

元記事を表示

【n * n の 2 次元配列の表示】N * N の九九表の出力

今度は出力されるnまでの九九表を作れという問題。
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__2dim_array_boss
九九の問題があったのでわかりやすかった
一応、自然数が出されるけど、Nコの場合+1しないといけないが、
N番目のところをN+1としないように注意

“`python
N = int(input())
for i in range(1,N+1):
for j in range(1,N+1):
if j == N:
print(j * i)
else:
print(j * i,end= ” “)

“`

元記事を表示

OTHERカテゴリの最新記事