Python3関連のことを調べてみた2022年05月28日

Python3関連のことを調べてみた2022年05月28日

超初心者がe869120さんの【分野別 初中級者が解くべき過去問精選 100 問】をpythonで解いてみた!

先週のABCでなんと入茶することができました! そして緑コーダになるための方法を適当にググっていると良い感じのブログを見つけたので、その方のやり方を真似てみることにしました!

https://ryusuke920.hatenablog.jp/entry/2021/04/18/170331

この方がまずはe869120さんの【分野別 初中級者が解くべき過去問精選 100 問】を解くのが良いと書いていたので、ゴリゴリと解いていくことに決めました!【全探索:ビット全探索】までの問題を全部終わらせた後に、どこにも解き方をまとめていないことに気づいたので、順列全探索から自分なりの解き方、自力で解けなかった時は他の優秀な方の解き方を自分なりにまとめていきたいと思っています!もし同じ問題に取り組むあなたの助けになれたら幸いです!

145 Average Length

https://atcoder.jp/contests/abc145/tasks/abc145_c

“`python:practice.py
from itertools import permutation

元記事を表示

JavaとPythonのHello World(http getバージョン)

## ■前提
Javaのフレームワーク:spring boot
Pythonのフレームワーク:fastapi

## ■本題
### Java
ファイル
“`HelloApplication.java
package com.example.hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloApplication {

public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
“`

“`GreetingController.java
package com.example.hello;

import java.util.concurrent.at

元記事を表示

Pythonソースコードからドキュメント自動生成方法

Pythonソースコードからドキュメントを自動生成するツールに *Sphinx* というツールがあります。ソースコードにコメントを記述しておくと、このコメントの情報から美しいドキュメントを生成してくれます。
慣れが必要なので簡単に使い方を書きます。

# サンプル環境構築
* 仮想環境構築
“`
$ python3 -m venv samplevenv
$ source samplevenv/bin/activate
$ git clone https://github.com/shunsvineyard/python-sample-code.git
$ cd python-sample-code
$ python3 -m pip install -r requirements.txt
$ rm -r docs
“`

* ディレクトリ構成
“`
├── LICENSE
├── README.rst
├── requirements.txt
├── setup.py
├── tests
└── trees
├── __init__.py
├── __main__.

元記事を表示

dijkstra法備忘録

# はじめに

atcoderでよく登場するので,備忘録としてまとめました.

# ダイクストラ法(dijkstra’s algorithm)の問題と戦略

### <問題>
出発点を一つ固定して,この頂点から他のすべての頂点への最短経路を求める問題を考える.

### <戦略>
各頂点への最短路を出発点に近い(短い)ところから一つずつ確定していく
“`math
\def\set#1{\left\{{#1}\right\}}
“`
### 例
頂点集合$V=\set{A,B,C,D,E,F}$と辺の集合が$E = \set{(A,B),(A,C),(B,D),(C,E),(C,F),(E,B),(E,D)}$となる重み付きの有向グラフを考える.
> 例えば,点Aから点Bへ行くには6km歩かなければならないようなグラフになっている.
この例での移動は一方通行(有向グラフ)であるが,ダイクストラ法は対面通行(無向グラフ)でも使用できる.

![dijkstra.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

卒業制作にてAIによる手書きひらがな文字認識ソフトを作った結果、、、(随時書き足し)

# 経緯と状況
初めまして。この5月にアメリカの4年制大学をComputer Science専攻で卒業した者です。
最後の春学期に卒業制作として何か作れと言われ、その直前の冬休みに独学で学んだDeep Learningに関連したものを作ろうとこのプロジェクトに挑みました。
学校の大きさはD2なのでそこまで大きくはないですが、その分クラスの規模が小さく、教授との距離がとても近く親身になってくれる学びやすい環境でした。が、全くもってAIについての知識はなく、勿論さらに細分化されたDeep Learningなんていうものは全く理解していませんでした。
そんなこんなで始めたこのプロジェクトですが、先駆者様達の残してくれた研究結果やブログ、コード等のおかげでなんとか形にすることができました。
この記事は、レゴブロックを組み合わせて一つのものを作るように、様々な記事を読みその情報を無理くり組み合わせて完成したものとその経緯をこの後に続く方々の役に立てばと思い、参考にさせていただいた記事のリンク先も併せて綴りたいと思います。

※おそらく長くなるため、毎日少しずつ書いていきます。(毎日書くとは言って

元記事を表示

scipy.stats: 正規分布の検定(オムニバス検定) normaltest

# 正規分布の検定(オムニバス検定) `normaltest`

データは正規分布からの標本といえるか?の検定。

$H_0$:母分布は正規分布である。

$H_1$:母分布は正規分布ではない。

以下の 2 論文に基づいたオムニバス検定である。

1. D’Agostino, R. B. (1971), “An omnibus test of normality for
moderate and large sample size”, Biometrika, 58, 341-348
2. D’Agostino, R. and Pearson, E. S. (1973), “Tests for departure from
normality”, Biometrika, 60, 613-622

`normaltest(a, axis=0, nan_policy=’propagate’)`

## 1. 正規乱数について検定を行う

平均値=50,標準偏差=10 の正規乱数 25 個について検定を行う。

“`python
from sc

元記事を表示

numpy, list の append の速度の違い

# やること

`numpy` と `python list` の `append` が結構速度が違うと見たので、実際に違いを計測してみる。

https://numpy.org/doc/stable/reference/generated/numpy.append.html

https://docs.python.org/ja/3/library/stdtypes.html#sequence-types-list-tuple-range

# コード

“`python
import numpy as np
import time
import matplotlib.pyplot as plt
import pandas as pd

data_nums = np.logspace(1, 5, 5)
# [1.e+01 1.e+02 1.e+03 1.e+04 1.e+05]
data_nums = data_nums.astype(“int64”)

df = pd.DataFrame(
index=range(len(data_nums)), columns=[

元記事を表示

Pythonで一様乱数の配列を生成するときの速度比較

# やること

**一様乱数の配列を生成するための時間を比較する**

一様分布とは。

https://ja.wikipedia.org/wiki/%E4%B8%80%E6%A7%98%E5%88%86%E5%B8%83#:~:text=%E4%B8%80%E6%A7%98%E5%88%86%E5%B8%83%EF%BC%88%E3%81%84%E3%81%A1%E3%82%88%E3%81%86,%E8%B7%9D%E9%9B%A2%E3%81%AE%E5%88%86%E5%B8%83%E3%82%92%E6%8C%87%E3%81%99%E3%80%82

# 一様乱数を生成するために使用したライブラリ

– “`numpy.random.uniform“`

https://numpy.org/doc/stable/reference/random/generated/numpy.random.uniform.html

– “`numpy.random.default_rng“` (Numpy version1.17以降で推奨されているようです)

https

元記事を表示

scipy.stats: 幾何平均と調和平均 gmean, hmean

# 1. 幾何平均 `gmean`

`gmean(a, axis=0, dtype=None, weights=None)`

“`python
from scipy.stats import gmean
x = [1.2, 3.1, 4.6, 2.2, 5.7]
gmean(x)
“`

2.9263054868319522

`gmean` 関数を使わずに計算すると以下のようになる。

“`python
import numpy as np
np.exp(np.mean(np.log(x)))
“`

2.9263054868319522

“`python
np.prod(x)**(1/len(x)) # 非推奨
“`

2.9263054868319527

“`python
以下のようなテストデータ(平均値=50,標準偏差=10)で幾何平均を求めてみる。
“`

“`python
from scipy.stats import norm
z = norm.rvs(loc=50, scale=

元記事を表示

SOFAframework備忘録 Softrobotpluginを使うための事前準備

SOFA flameworkのSoftrobot pluginのチュートリアルでいろいろ一緒にビルドされたパッケージが配布されてるのでこれを始めるための環境設定について記す
https://project.inria.fr/softrobot/

# 必要なもの

– 本体
– SOFA framework
– プラグイン
– Sofrrobot plugin
– ソフトロボットの制御に関するあれこれを楽にしてくれる
– STLIB(SOFA template library)
– SOFAを使うにあたってよく書くテンプレ文を省略するためのライブラリ
– SOFApython3
– SOFAで.pyが使えるようになるplugin
STLIBを使う場合必要になる

—–
自前で設定の必要のある項目
– python3.8
(python3.7-3.9なら大丈夫そうだけど公式が3.8を推奨)
– numpy scipy
– 環境変数周り

# 手順
### 1 pythonの準備
pyth

元記事を表示

scipy.stats: 平均値まわりの第 r 次母積率 moment

# 平均値まわりの r 次母積率

$(x-\mu)^r$ の期待値のことである。$\nu_r’$ で表すことが多い。

離散変数のときは

$\nu_r’ = \sum(x-\mu)^r f(x)$

連続変数のときは

$\nu_r’ = \displaystyle \int_{-\infty}^{\infty} (x-\mu)^rf(x)dx$

`moment(a, moment=1, axis=0, nan_policy=’propagate’)`

“`python
from scipy.stats import moment
x = [1.2, 3.1, 4.6, 2.2, 5.7]
“`

1次(デフォルト),2次,3次,4次の母積率(モーメント)

“`python
moment(x), moment(x, 2), moment(x, 3), moment(x, 4)
“`

(0.0, 2.6184, 0.6126720000000052, 11.18588832)

“`python
moment(x, [0, 1, 2, 3,

元記事を表示

scipy.stats: 記述統計 describe

# 記述統計 `describe`

サンプルサイズ,最小値,最大値,平均値,分散,歪度,尖度を求める。

`describe(a, axis=0, ddof=1, bias=True, nan_policy=’propagate’)`

“`python
from scipy.stats import describe
x = [1.2, 3.1, 4.6, 2.2, 5.7]
describe(x)
“`

DescribeResult(nobs=5, minmax=(1.2, 5.7), mean=3.3599999999999994, variance=3.2729999999999997, skewness=0.14460191499270095, kurtosis=-1.3684571122281206)

表示される variance は,デフォルトで `ddof=1`, `numpy.var(x, ddof=1)` すなわち,不偏分散である。

“`python
np.var(x, ddof=1)
“`

3.27299999

元記事を表示

scipy.stats: 尖度と歪度

# 1. 尖度 `kurtosis`

`kurtosis(a, axis=0, fisher=True, bias=True, nan_policy=’propagate’)`

“`python
import numpy as np
from scipy.stats import kurtosis
x = [1.2, 3.1, 4.6, 2.2, 5.7]
“`

## 1.1. Fisher の定義(正規分布のとき 0 になる)

“`python
kurtosis(x) # g2:後述
“`

-1.3684571122281206

関数を使わずに計算すると以下のようになる。

“`python
from scipy.stats import zscore
np.mean(zscore(x)**4) – 3
“`

-1.3684571122281206

## 1.2. Pearson の定義(正規分布のとき 3 になる) `fisher=False`

“`python
kurtosis(x, fisher=False)
“`

元記事を表示

Python Thin Driver for Oracle Database を試す

## はじめに
こちらのサイト「[Open Source Python Thin Driver for Oracle Database](https://cjones-oracle.medium.com/open-source-python-thin-driver-for-oracle-database-e82aac7ecf5a) 」にてPython言語に対するOracle Database接続のThin Driverがリリースされたと発表がありましたので試してみました。

Oracle Database への言語別アクセスドライバについては nakaie さんのこちらのまとめ記事「[Oracle Databaseへの言語別アクセスドライバのまとめ](https://qiita.com/nakaie/items/b6e699e720cdbd184705)」をご確認ください。

これまで Python から Oracle Databaseへアクセスするには cx_oracle というアクセスドライバが必要で、これにはOracle Instant Client といったOracle Cli

元記事を表示

RubyでPythonのようにfor i in range(n)する

# 普通のコード
rubyの普通のrangeオブジェクトだとこうです
“`ruby
(0…n).each do |i|
puts i
end
“`
for文で書き直すと以下。
“`ruby
for i in 0…n
puts i
end
“`
# range関数
しかし、私はPythonのようにrangeを書きたいと思いました。
そこで、以下の関数を定義します。
“`ruby
def range(l, r=nil, s=nil)
return 0…l unless r
return l…r unless s
(l…r).step(s)
end
“`
`range(l)`のとき、`0…l`を返す。
`range(l, r)`のとき、`l…r`を返す。
`range(l, r, s)`のとき、`(l…r).step(s)`を返す。

使い方は以下です。※コロンは不必要、endは必要です。
“`ruby
for i in range(10, 20, 2)
puts i
end
#=> 10
#=> 12
#=> 14
#=

元記事を表示

CORSハンズオン

# CORSハンズオン

CORSを理解するためのハンズオンを書きました。

![無題の図形描画 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480312/e224b16e-dce5-40d5-7e73-de8a70763f64.png)

https://github.com/zeek0x/cors-handson

サーバ側のコードもいじりながら学べるようになっています。
CORSについて概要は知っているけれど、きちんと理解をしていない人向けになっています。
(調べた限りでは)インターネット上に同様の資料(サーバ側もいじりながらCORSを学習する資料)がなかったのが書いた理由です。
数十分で終わると思うので気軽にやってみてください。

元記事を表示

tensorflow 2.9で画像認識をしてみた

# 目的
下記サイトを参考に画像認識を試してみました。

[YOLOをpythonで動かして画像認識をしてみた](https://qiita.com/daiarg/items/a922c242af9bb76eb470)

私のPC環境では、いくつかエラーが発生しました。発生したエラーの回避方法をまとめ、画像認識の動作確認をします。

# 開発環境
Python version:3.9.7
OS: windows 10.0
Tensorflow:2.9

# 環境構築
まず、必要なライブラリをインストールと、gitからデータと学習の重みファイルをダウンロードします。
[こちら](https://qiita.com/daiarg/items/a922c242af9bb76eb470)の環境構築と同じようにして設定してください。

# 動作確認
上記リンクを使って、下記ファイルの動作を検証してみます。

“`test.py
from darkflow.net.build import TFNet
import cv2

options = {“model”: “cfg/yolo.cfg”,

元記事を表示

PythonでMinecraftサーバーの独自コマンドを作る

## PythonでMinecraftのサーバーを……?
Minecraftのサーバーに自分で独自機能を実装したい!
そんな時は皆さんJavaでプラグインを書いたりするでしょう。
しかしJavaができない人はどうすれば……?
Javaを勉強して書けるようになれ!というのは至極まっとうでぐうの音も出ない正論です。
ですが手段はまだ残されています。Pythonを使うのです!

## MCRconというライブラリ
PythonにはMCRconというライブラリがあります。(https://pypi.org/project/mcrcon/)
その名の通りMinecraftサーバーに実装されているRconという機能を手軽に利用できるようにするライブラリです。

## MCRconを使う
MCRconを使えばサーバーの外からマインクラフトのサーバーにコマンドを簡単に送り込むことができます。
“`
with MCRcon(‘サーバーのアドレス’,’Rconのパスワード’,ポート) as mcr:
mcr.command(‘tellraw @a “hello world”‘)

元記事を表示

Python基礎文法まとめ

## はじめに
本記事は学内の勉強会用に作成した資料をそのまま貼り付けたものとなります。
口頭での説明を前提として作成しているため、
一部内容が不十分であったり、正確ではない表現が含まれているものがあります。

また、モジュールや例外処理など今後追加予定のものも多くあり、
現時点で内容を網羅しているわけではないことをご了承ください。

## 目次 ##
1. 行構造
1. 式
1. 文
1. 節
1. コメント
2. 入出力
1. print関数
1. エスケープシーケンス
1. input関数
3. 算術演算
1. リテラル
1. 算術演算子
1. 文字列演算
4. 変数
1. 変数
1. 命名規則
1. 予約語
1. 代入演算子
1. 変数の演算
1. 複合演算子
5. オブジェクト
1. オブジェクト
1. ID
1. 型
6. 数値型
1. int
1. float
1. complex
7. シーケンス

元記事を表示

Pythonでリストの要素を順に出力する簡潔な書き方を知った

pythonでリストの要素を一つずつ出力したいとき、そのままprintするとリストの書式?が出力されてしまう。
イテラブルな要素の先頭に*を付けるとfor文を使うことなく、出力できることを知った。

“`python:
lst = [1,2,3,4]

print(lst) # => [1, 2, 3, 4]
print(*lst) # => 1 2 3 4
“`

半角空白で区切りたくない場合はprintの引数にsep=”を加える。
“`python
print(*lst, sep=”) # => 1234
“`

for文を使わずコードが簡潔に書けて、かなり良いと思う。
なんで今まで知らなかったのだろう。

元記事を表示

OTHERカテゴリの最新記事