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

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

【初心者】Pythonの配列

###Pythonで配列を使ってみる

split()に何も指定しないと、空白で区切ってリストを作ってくれる。

“`

>>> s1 = “The quick brown fox jumps over the lazy dog.”
>>> s_list = s1.split()
>>> print(s_list)
[‘The’, ‘quick’, ‘brown’, ‘fox’, ‘jumps’, ‘over’, ‘the’, ‘lazy’, ‘dog.’]
>>> print(s_list[1])
quick
>>> len(s_list)
9
>>> while i < len(s_list): print(s_list[i]) i += 1 The quick brown fox jumps over the lazy dog >>> for w in s_list:
print(w)

The
quick
brown
fox
jumps
over
the
lazy
dog.
“`

元記事を表示

ゼロから始めるLeetCode Day75 「15. 3Sum」

# 概要

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

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

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

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

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

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

Python3で解いています。

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

前回
[ゼロから始めるLeetC

元記事を表示

pandasのデータフレームにgroup_idを付与したい

# はじめに
pandasで重複削除したい場合や、集約したいときにはdrop_duplicatesやgroupbyを使えばやりたいことができます。

[PandasのDataFrameやSeriesで重複要素を取り除く方法
Python](https://qiita.com/kira4845/items/6798e54eb76b15329e3c)
[Pandas の groupby の使い方](https://qiita.com/propella/items/a9a32b878c77222630ae)

ただ、groupbyするときと同じような条件で、各groupにgroup_idを付与したい、みたいなこともたまにありますが、やりかたがわからなかったので実装してみました。(bestプラクティスじゃないかもだけど簡単に実装できた)

# group_idの付与

“`Python
# pandasのimport
import pandas as pd

# データフレームの用意
df = pd.DataFrame({
‘building_name’: [‘Aビル’, ‘Aビ

元記事を表示

【初心者】Pythonの関数

###Pythonで関数を使ってみる
######引数のデフォルトを指定する

“`
def hello(name=”A”, age=10):
result = “Hello I’m ” + name + “, I’m ” + str(age)
print(result)

>>> hello()
Hello I’m A, I’m 10
>>> hello(“Bob”, 20)
Hello I’m Bob, I’m 20
“`

######文字列の引数を逆にする

“`
>>> def reverse(s):
cnt = len(s)
result=””

if cnt < 1: result = s else: i = cnt-1 while i > -1:
result = result + s[i]
i = i – 1
print(result)

>>> reverse(“abcde”)
edcba
>>> reverse(“a”)
a
“`

#####3で割り切れるか、5で割り切れるか、両方で割り切れるか
“`

元記事を表示

alpineでpip3: not foundになったら

### pip3 not found エラーがでました

JenkinsでDocker Imageを作成する際に件のエラーが出た。
エラー詳細は下記のような感じ。

#### 変更前のDockerfile

“`
FROM alpine

RUN apk –update-cache add \
python3 \
python3-dev \
py3-pip \
gcc \
g++ \
curl \
bash

RUN curl -sSL https://sdk.cloud.google.com | bash
ENV PATH $PATH:/root/google-cloud-sdk/bin

RUN apk update \
&& apk upgrade \
&& gcloud components install kubectl

COPY ./requirements.txt /tmp/requirements.txt
RUN pip3 install –upgrade pip
RUN pip3 in

元記事を表示

【初心者】Phthonで文字列を抽出する

######文字列


######0以上のインデックスを指定
一番左の文字を指定したいときは[0]。

“`
>>> w = “abcde”
>>> w[0]
‘a’
>>> w[4]
‘e’
“`

######マイナスのインデックスを指定
一番右の文字を指定したいときは[-1]。

“`
>>> w = “abcde”
>>> w[-5]
‘a’
>>> w[-1]
‘e’
“`
######インデックスの範囲外を指定するとエラー
“`
>>> w = “abcde”
>>> w[5]
Traceback (most recent call last):
File ““, line 1, in
word[5]
IndexError: string index

元記事を表示

MLFlow Tracking with PyTorch入門

# はじめに
こんにちは。
インターン先でMLFlowを用いることになったので、備忘録的な感じてつらつらしていこうと思います。
ここでは具体的な使い方をメインに書いていくんで、もっと知りたい方は公式ドキュメント(https://mlflow.org/)を読んでください。
勉強中ですので間違ってる箇所等ありましたら教えてください…。

# MLFlowとは
MLflowは、機械学習タスクにおける実験結果や実行環境などの管理を効率化できるOSSです。
現在は機械学習といえばPythonが最も使われて(多分)いますが、MLFlowはRやJavaでも利用できます。以下は公式サイトに載ってたやつです。
スクリーンショット 2020-07-03 0.45.56.png

最近では機械学習フレームワークも様々な言語で整備さ

元記事を表示

ゼロから始めるLeetCode Day74 「12. Integer to Roman」

# 概要

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

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

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

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

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

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

Python3で解いています。

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

前回
[ゼロから始めるLeetC

元記事を表示

[Python]PylanceのVS Code拡張機能をさっそく使ってみた。

VS Codeなどで使えるPylanceという拡張機能がリリースされていたので早速使ってみました。

参考 : [型ヒントでPython開発を加速 ~Microsoft、VS Code向けの拡張機能「Pylance」を発表](https://forest.watch.impress.co.jp/docs/news/1262974.html)

# (大雑把に)どんな拡張機能?

– マイクロソフト製のPythonの拡張機能です。
– Python拡張機能に入っているようなPythonの入力補完周りが有効になります。これはまあ大半のVS Code使ってPythonのコード書いている方はPythonの拡張機能入れていらっしゃるでしょうからそこまでは大きく変わりません。
– 以前書いたPythonの型チェック用のPyrightと同じように、コードを書きつつ型のミスや補完が効きづらい箇所で型アノテーションをすることで補完が効くようになってくれます(内部でPyrightが使われています)。
– Pyrightの記事: [入力補完を充実させ、より堅牢なPythonコードのための型アノテーシ

元記事を表示

Numpyのeinsumを使って3次元配列の掛け算

知り合いに簡単に3次元配列の掛け算をする方法を聞かれ、調べてみたらNumpyのライブラリにアインシュタインの縮約記号を用いたeinsumというのがありこれを使えば楽にできそうなのでやってみました。

1x2x5の3次元行列と2x3x5の三次元行列をまず適当に2つ作ります。

“`math
A =
\left(
\begin{matrix}
a_0 & a_1
\end{matrix}
\right)
, a_0 =
\left[
\begin{matrix}
0 & 1 & 1 & 0 & 0
\end{matrix}
\right]
, a_1 =
\left[
\begin{matrix}
0 & 1 & 0 & 0 & 1
\end{matrix}
\right]
“`
“`math
W =
\left(
\begin{matrix}
w_0 & w_1 & w_2 \\
w_3 & w_4 & w_5
\end{matrix}
\right)
, w_0 =
\left[
\begin{matrix}
0 & 1 & 2 & 3 & 4
\end{matri

元記事を表示

Ubuntu 18.04 + VsCode + Pytho3 + mysql-connector-python から mariadb10.5 にアクセスしてみる

#目的
・Ubuntu 18.04に mariadb10.5 をインストールする
・デモDB nation をインストールする
・python + mysql-connector-python を使ったサンプルコードを書いてみる

##Repositoriesを追加する

[https://mariadb.com/kb/en/mariadb-package-repository-setup-and-usage/](https://mariadb.com/kb/en/mariadb-package-repository-setup-and-usage/)より

$ curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
[info] Repository file successfully written to /etc/apt/sources.list.d/mariadb.list
[info] Adding trusted package signing keys...
[

元記事を表示

NumPy配列の列を抽出する方法いろいろ

2次元配列の列を取り出す方法のいろいろ.

## import
```python:
import numpy as np
```

## 配列の生成
まずは適当に5x4の配列を生成

```python:
a = np.arange(5*4).reshape([5, 4])
print(a)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]
# [12 13 14 15]
# [16 17 18 19]]
```

## 特定の1列を抽出する

```python:
# 2列目のみ
b = a[:, 2]
print(b)
# [ 2 6 10 14 18]
```
`a[row, column]`とすると, `row`の部分で行の指定, `column`の部分で列の指定を行う.
今回は列を取り出したいので, `row`の部分は常に`:`とする. `:`のみ記述することで, 行に関しては特に指定しないという意味になる. つまり`a[:, 2]`は, 「すべての行から, インデックスが2の要素だけください」ということになる.

元記事を表示

pythonの __all__ について

pythonを以前勉強してた時期に、`__all__`について触れていましたが、なんだか最近なんだろうって迷い始めたので、ねんのためメモしておきます。

`__all__`というのは`__init__.py`ファイルに書く内容です。それで、allの中に書く文字列は全部このpythonモジュールがimportされる際にimportされます。

それで`from package import *`だと、このpackageの中にある先ほどの文字列の関数がimportされるわけです。それ以外はimportされません。

ということでした。以上

ちなみにですが、`from package import *`は非常に嫌われる書き方なので、できるだけ使わないように気をつけて

以下は参考にさせていただいた海外コミュニティにて質問された際の答えです。一応概要は上記で書いていますので、気になる方は御覧ください。

>`__all__` is a variable that can be set in the `__init__.py` file of a package.

>The `__all_

元記事を表示

python dictとsorted関数について

pythonの勉強をしていると、sorted関数とはは避けて通れないものです。しかもよく忘れるので、メモっておきますね。ここは辞書に対してsorted関数を使っています。
気をつけるべきポイントはlambdaの後ろのyやxは別に何でもいいということです。例えば、lambda aaa:aaa[0]としても構わないのです。なぜなら、ここのyやxはただ前のlistの(例ではlistA, listB, listCのことです)中身なのですから。ここさえ押さえておけば大丈夫そうですよね。
以下の例を見てみてください。

```python
listA = [3, 6, 1, 0, 10, 8, 9]
print(sorted(listA))
#结果1
#[0, 1, 3, 6, 8, 9, 10]

listB = ['g', 'e', 't', 'b', 'a']
print(sorted(listB))
print(sorted(listB, key=lambda y: y[0]))
#结果2
#['a', 'b', 'e', 'g', 't']
#['a', 'b', 'e', 'g', '

元記事を表示

[Pytorch] torch.catの動きを理解する

## はじめに
[PyTorchの公式](https://pytorch.org/docs/master/generated/torch.cat.html)(1)にある```torch.cat```の例だけでは良く分からなかったので他の例を使って理解するための書き残しです.

## sample code

```python
import torch
input1 = torch.randn(2, 3, 4)
input2 = torch.randn(2, 3, 4)
input3 = torch.randn(5, 3, 4)
input_list = [input1, input2, input3]

output1 = torch.cat(input_list, dim=0)
print(output1.size()) # torch.Size([9, 3, 4])

output2 = torch.cat(input_list, dim=1) # error
print(output2.size())

output3 = torch.cat(input_list, di

元記事を表示

(備忘録)ディープ以外の機械学習でメモリが足りない時のincremental learningまとめ

# sklearn
公式回答。非線形モデルはMLPぐらいか?

https://scikit-learn.org/stable/modules/computing.html#strategies-to-scale-computationally-bigger-data

# xgb

stack overflowの回答。あまり使わないので正しいかはわからない

https://stackoverflow.com/questions/38079853/how-can-i-implement-incremental-training-for-xgboost

# lightgbm
githubの公式リポジトリのissueから

見た感じ「sklearnで言う`partial_fit`を再現する方法を見つけた」と自己解決しているっぽい

https://github.com/microsoft/LightGBM/issues/2718

Towards Data Scienceより

xgbでのやり方も乗っている

https://towardsdatascience.com/how-to

元記事を表示

バラ曲線のnとkを変えた場合のグラフを、タイル状に描画する

```python
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(30,30))
c=1
for k in range(1,6):
for n in range(1,6):

ax = fig.add_subplot(5,5,c)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['bottom'].set_position('zero')
ax.spines['left'].set_position('zero')
ax.axis([-1,1,-1,1])

th = np.arange(0, (2*np.pi)*k, 0.01)

r = np.sin((n/k)*th)
x = r * np.cos(th) # 極座標からの変換
y = r * np.sin(th)

元記事を表示

印象を表す語と10色の関係を表す行列を作る

```python
from google.colab import drive
drive.mount('/content/drive')

from PIL import Image
import numpy as np
import os
from scipy.spatial import distance

# filepathで指定した画像ファイルを読み込み、その画像のRGB値の平均をNumpyのArrayで【行ベクトルで】返す関数 ext_mean_rgb(filepath)
def ext_mean_rgb(filepath):
image = np.array(Image.open(filepath).convert('RGB')).reshape(-1,3)
return np.array([np.mean(image[:,0]),np.mean(image[:,1]),np.mean(image[:,2])])

# RGB値をnumpy array、qcolor=np.array([r,g,b])で与えられると[赤,橙,黄,緑,青,紫,ピンク,白,グレー,

元記事を表示

Pythonの超基本文法カンニング用プログラム_フロー制御文ver

仕事でプログラミングをしないが趣味でpythonを始めた私自身のためのチートシート。初学者の方は「思い出す」作業にどうぞお使いください。

超基本文法について理解しているものの、python独特の書き方をすぐ忘れるのでカンニング用プログラム。

確認環境:Python3.7.6

#フロー制御① if文
```python:01_if.py
#末尾の:忘れがち。
print('あなたの名前を入力してください。Alice,usagi,etc...')
name = input()
if name =='Alice':
print('やぁ、Alice.')
elif name == 'usagi':
print('どうも白うさぎさん')
else:
print('初めまして、' + name + '.')
```

```python:出力例(Aliceと入力すると)
あなたの名前を入力してください。Alice,usagi,etc...
Alice
やぁ、Alice.
```

#フロー制御② whileループ
```python:02_while.py
#無限ループにな

元記事を表示

python selenium

#ページ全体のスクリーンショット

```python:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options

# ブラウザーを起動
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome('/Desktop/selenium/chromedriver', options=options)

driver.get("https://www.yahoo.co.jp/")

w = driver.execute_script('return document.body.scrollWidth')
h = driver.execute_script('return document.body.scrollHeight')
driver.set_window_size(w, h

元記事を表示

OTHERカテゴリの最新記事