Python3関連のことを調べてみた2020年06月24日

Python3関連のことを調べてみた2020年06月24日

最小二乗法の多項式の係数を求める

#概要
####最小二乗法
最小二乗法は、誤差を伴う測定値の処理において、その誤差の二乗の和を最小にすることで、関係式を求める方法です。

####プログラムについて
今回作成したプログラムは、予め用意されたデータ`x` `y`をリストにし、そのデータから行列`S` `T`を求め、係数`a`を導く処理となります。また、求めたい多項式の次数を`m`と置いています。
最小二乗法を簡単に求めることができるライブラリは既に存在するかもしれませんが、今回はそのようなライブラリは利用せず、配列操作ライブラリ`numpy`のみを利用し、データ量を変更しても融通が利くような処理を作成しました。

#プログラム
“`LeastSquares.py
# -*- coding: utf-8 -*-
#!/usr/bin/env python3

import numpy as np

X_data = [10, 20, 50, 70, 100]
Y_data = [9.3, 9.8, 10.9, 11.9, 13.1]
m = 1

def ST_list(power):
S, T = 0, 0

元記事を表示

Ubuntu 18.04 + VsCode + Pytho3 + pyodbc(odbc-postgresql) から Posgtgres12 にアクセスしてみる

#目的
・Ubuntu 18.04 に odbc-postgresql をインストールする
・同じく pyodbc をインストールする
・[Ubuntu 18.04 + VsCode + Pytho3 + psycopg2(libpq-dev) から Posgtgres12 にアクセスしてみる](https://qiita.com/tabizou/items/efaa0a1da6c48c20a1f1)
で作成した環境にアクセスしてみる
※Ubuntu はファイルが分割の粒度が小さいから、ファイル探すのにコツがいる感じ

##pyodbcをインストールする

$ sudo pip3 install pyodbc
~
Installing collected packages: pyodbc
Successfully installed pyodbc-4.0.30

##odbc-postgresqlをインストールする
対象パッケージを検索してみる

$ sudo apt search post | grep odbc

golang-github-

元記事を表示

データサイエンス100本ノック~初心者未満の戦いpart4

これはデータサイエンティストの卵がわけもわからないまま100本ノックを行っていく奮闘録である。
完走できるか謎。~~途中で消えてもQiitaにあげてないだけと思ってください。~~

[100本ノックの記事](https://codezine.jp/article/detail/12456)
[100本ノックのガイド](https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess/blob/master/docker/doc/100knocks_guide.pdf)

**ネタバレも含みますのでやろうとされている方は注意**

ココでグダグダ書いているのはネタバレ防止に1ページ分くらいの尺を稼いでいるからです()

途中で飽きたのでDockerの中身を掘り掘りしてました。

コレは見づらい!この書き方は危険!等ありましたら教えていただきたいです。~~心にダメージを負いながら~~糧とさせていただきます。

今回は23~28まで。
[[前回]](https://qiita.com/sola_wing529/i

元記事を表示

ゼロから始めるLeetCode Day65「560. Subarray Sum Equals K」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

CSVをリサイズして返す関数

意外と見当たらなかったので作りました。
グレースケール画像のリサイズと同じことしてます

```python:CSVをリサイズして返す関数
from PIL import Image
from glob import glob
import numpy as np
import os
import csv

def resize_csv(file, width, height):
original = np.loadtxt(file, delimiter=",")
img = Image.fromarray(original)
resized_img = img.resize((width, height))
return np.array(resized_img)

def resize_all_csv(folder, width, height):
files = glob(folder + "*")
for file in files:
basename = os.path.basename(file)

元記事を表示

データサイエンス100本ノック~初心者未満の戦いpart3

これはデータサイエンティストの卵がわけもわからないまま100本ノックを行っていく奮闘録である。
完走できるか謎。~~途中で消えてもQiitaにあげてないだけと思ってください。~~

[100本ノックの記事](https://codezine.jp/article/detail/12456)
[100本ノックのガイド](https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess/blob/master/docker/doc/100knocks_guide.pdf)

[前回環境構築の参考にさせていただいたページ](https://qiita.com/rasyo/items/dd6f8dfc422511da25d6)

**ネタバレも含みますのでやろうとされている方は注意**

記事を書く時点で27本目まで終わっていますが、知らなかった書き方も多く、また「自分はこう書いたけど答えはこうだった」というものも多くあったのでメモ代わりに置いておきます。

コレは見づらい!この書き方は危険!等ありましたら教えてい

元記事を表示

データサイエンス100本ノック~初心者未満の戦いpart2

これはデータサイエンティストの卵がわけもわからないまま100本ノックを行っていく奮闘録である。
完走できるか謎。~~途中で消えてもQiitaにあげてないだけと思ってください。~~

[100本ノックの記事](https://codezine.jp/article/detail/12456)
[100本ノックのガイド](https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess/blob/master/docker/doc/100knocks_guide.pdf)

[前回環境構築の参考にさせていただいたページ](https://qiita.com/rasyo/items/dd6f8dfc422511da25d6)

**ネタバレも含みますのでやろうとされている方は注意**

今回は10~18まで
[目次付き初回](https://qiita.com/sola_wing529/items/5fdbd97308dd88da28eb)

今回から、自分で書いたモノが成功してるとは限らず、答えを見ながら書いてい

元記事を表示

Ubuntu 18.04 + VsCode + Pytho3 + psycopg2(libpq-dev) から Posgtgres12 にアクセスしてみる

#目的
・Ubuntu 18.04(その1)に Posgtgres12 をインストールする
・新規roleを作成する
・新規DB(demo)を作成する
・作成済のroleに対して新規作成DB(demo)に対する権限を付与する
・作成したテーブルに対して Ubuntu 18.04(その2) + VsCode + Python3 + psycopg2 からアクセスしてみる
※Ubuntu 18.04 に psycopg2 のインストするのが意外とめんどくさかったのでメモを残しておく
※libpq-devは昔からめんどくさかった気がする・・・
※psycopg2をビルドする場合は、リポジトを設定後 libpq-dev のみインストールすれば良い
※パッケージ関連で迷った時の apt search はやはり重要 なぜ pip にはないんだろう??

##Code RunnerでPython3をキックする場合の修正点
修正になったバージョンが不明なのだけど 1.46.1 の時点では以下の手順で修正する
・ファイル -> 基本設定 -> 設定
・検索ボックスに Code-runner:Execut

元記事を表示

データサイエンス100本ノック~初心者未満の戦いpart1

これはデータサイエンティストの卵子(卵になる前。~~♂だと垢BANくらいそうなので~~)がわけもわからないまま100本ノックを行っていく奮闘録である。
完走できるかすら謎。~~途中で消えてもQiitaにあげてないだけと思ってください。~~

[100本ノックの記事](https://codezine.jp/article/detail/12456)
[100本ノックのガイド](https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess/blob/master/docker/doc/100knocks_guide.pdf)

[前回環境構築の参考にさせていただいたページ](https://qiita.com/rasyo/items/dd6f8dfc422511da25d6)

**ネタバレも含みますのでやろうとされている方は注意**

記事を書く時点で25本目まで終わっていますが、知らなかった書き方も多く、また「自分はこう書いたけど答えはこうだった」というものも多くあったのでメモ代わりに置いておきます。

元記事を表示

ゼロから始めるLeetCode Day64「287. Find the Duplicate Number」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

競技プログラミングにおける標準入力の受け取り方

競技プログラミングでは、標準入力を受け取る機会が多いが、それの受け取り方を備忘録として残しておく。

```input.txt
Hoge
```

```sample.py
from sys import stdin

a = stdin.readline().rstrip()
print(a.upper()) # 読み込んだ文字を大文字に変換
```

の2つのファイルを作成し、ターミナルで以下を実行する。

`python sample.py < input.txt` すると、 `HOGE` が返ってくる。

元記事を表示

AtCoder beginner Contest 171

A~Dまでを記載します。

##[A - αlphabet](https://atcoder.jp/contests/abc171/tasks/abc171_a)

pythonだと「isupper()」を使うことで一瞬で解けます。

```Python:Python
A = input()

if A.isupper():
print('A')
else:
print('a')
```

##[B - Mix Juice](https://atcoder.jp/contests/abc171/tasks/abc171_b)

貪欲法?
金額の最小の商品から最適解の処理をひたすら繰り返します。

```Python:Python
N, K = list(map(int, input().split()))

A = list(map(int, input().split()))

A.sort()

ans=0
for i in range(K):
ans+=A[i]

print(ans)
```

##[C - One Quadrillion and One

元記事を表示

Python学習記録(paiza B問題:計算ドリル)

ちょっと修正したが、、、まだタイムアウト、、

import random
plus, minus = map(int,input().split())

Equal = ["=" for i in range(plus+minus)]
Plus = ["+" for i in range(plus+minus)]
Minus = ["-" for i in range(plus+minus)]

ok_list_plus = []
ok_list_minus = []
ans_list = []

for i,(p, m, e) in enumerate(zip(Plus, Minus, Equal)):
if i < plus: for i in range(5050): if len(ok_list_plus)<(plus): x = random.randint(0,100) y = random.randint(0,100)

元記事を表示

scipy/solve_ivp における初期条件のイベント検知回避

# 問題点
`solve_ivp`のイベント検知関数 `find_active_events` はデフォルトで以下のように定義されている.(コメントは省略した)

```python:ivp.py
def find_active_events(g, g_new, direction):
g, g_new = np.asarray(g), np.asarray(g_new)
up = (g <= 0) & (g_new >= 0)
down = (g >= 0) & (g_new <= 0) either = up | down mask = (up & (direction > 0) |
down & (direction < 0) | either & (direction == 0)) return np.nonzero(mask)[0] ``` 上記定義に従うと,初期条件 $(t_0, y_0)$ が `g=event(t0,y0)=0` を満たす場合でもイベントを検知してしまうた

元記事を表示

Python学習記録(paiza:B問題:計算ドリル)

最初のテストはpassしたが、テストが進むにつれて、
タイムアウトによって処理が行われなかった。

課題
・whileは時間かかるみたいだから、forで書き換える
・list作成を内包で書き換える

import random
plus, minus = map(int,input().split())

Equal = []
Plus = []
Minus = []

for i in range(plus+minus):
Plus.append("+")
for i in range(plus+minus):
Minus.append("-")
for i in range(plus+minus):
Equal.append("=")
ok_list_plus = []
ok_list_minus = []
ans_list = []

for i,(p, m, e) in enumerate(zip(Plus, Minus, Equal)):
if i < plus: while len(ok_list_plus)<(

元記事を表示

Tkinterで押したボタンだけの色を変える方法

```example.py
def setnumber():
column = -1
row = 0
root = tk.Tk()
root.title('numbers')
root.geometry('470x310')
for i in range(101):
if i > 0:
if i%10 == 1:
row += 1
column = -1
column += 1
text=f'{i}'
btn = tk.Button(root, text=text)
btn.grid(column=column, row=row)
btn.config(command=collback(btn))
root.mainloop()

def collback(btn):
def nothing():

元記事を表示

[Python]フォーマット済み文字列

### 今まで
```Python
a = 5
print("あなたは{}歳".format(a))
# あなたは5歳
```
又は

```Python
print("あなたは" + str(a) + "歳")
# あなたは5歳
```
### フォーマット済み文字列
```Python
a = 5
print(f"あなたは{a}歳")
# あなたは5歳
```
これができるようになると、
`str()`と`+`が減り簡潔に文字列と数値を結合できる。
***
### 参考
https://note.nkmk.me/python-f-strings/

元記事を表示

Win10 + VsCode + Python3 + psycopg2 から Ubuntu 20.04 + Posgtgres12 にアクセスしてみる

#目的
[Ubuntu 20.04 に Posgtgres12 をインストール後 C# + Npgsql でアクセスしてみる](https://qiita.com/tabizou/items/47f395d7ab3030dd1915)
でインストしたPostgresをもう少し触ってみる
・新規roleを作成する
・新規DB(demo)を作成する
・作成済のroleに対して新規作成DB(demo)に対する権限を付与する
・作成したテーブルに対して Win10 + VsCode + Python3 + psycopg2 からアクセスしてみる
・Ubuntu + VsCode + Python3 の場合の追加設定 [Ubuntu 16.04 x64 + VsCode + Code Runner で Python3を使ってみる](https://qiita.com/tabizou/items/bcd0dd44a8f51ca2fcf6)
##アクセス環境の設定

$ su - postgres
$ psql -U postgres
ユーザ postgres のパスワード:
psql

元記事を表示

個人的に忘れがちなpandasの書き方備忘録

### 作業用にSampleのDataFrameを作成
```python
df = pd.util.testing.makeMixedDataFrame()
df
```

| | A | B | C | D |
|--:|--:|--:|--:|--:|
| 0 | 0.0 | 0.0 | foo1 | 2009-01-01 |
| 1 | 1.0 | 1.0 | foo2 | 2009-01-02 |
| 2 | 2.0 | 0.0 | foo3 | 2009-01-05 |
| 3 | 3.0 | 1.0 | foo4 | 2009-01-06 |
| 4 | 4.0 | 0.0 | foo5 | 2009-01-07 |

### pandasの表示オプションの変更
```python
pd.set_option('max_rows', 2)
pd.set_option('max_columns', 3)
df
```
| | A | ... | D |
|:--|--:|--:|--:|
| 0 | 0.0 | ... | 2009-01-01 |
| ... |

元記事を表示

Pythonのビルトイン関数たち

# まえおき

- この記事は執筆中の[やさしくはじめるPythonプログラミング](https://github.com/simon-ritchie/python-novice-book-preview)の本の特定の章の部分抜粋です。
- 入門本なので初心者の方向けです。
- ビルトイン関数の章の内容が主になります。
- Qiita記事にマッチしていない箇所(「章」や「ページ」といった単語が使っていたり、改行数が余分だったり、リンクが対応していない等)があるという点はご留意ください。気になる方は↑のリンクの電子書籍版をご利用ください。
- コメントなどでフィードバックいただいた場合、書籍側にも活用・反映させていただく場合があります。

# 最初から使える関数たち : Pythonのビルトイン関数

本章ではPythonのよく使われるビルトイン関数について触れていきます。ビルトインという単語は聞きなれないものかもしれませんが、英語だと「built-in」という単語で、「作り付けの」とか「本来備わっている」、「内臓の」といったような意味を持ちます。

`built`という単語からも分かる

元記事を表示

OTHERカテゴリの最新記事