Python3関連のことを調べてみた2021年09月23日

Python3関連のことを調べてみた2021年09月23日

【Python】【timeit】コードの処理の実行時間を計測する!

 僕は何度か、Pythonの標準機能として既に存在しているプログラムを自分で作りました。自分でアルゴリズムを考えて手を動かす学習のためです。

 そんな時に考えたのは、「同じプログラムは同じプログラムでも、処理にかかる時間はそれぞれどのように異なるのだろう」ということでした。

 そこで、「timeit」というモジュールを使って、同じプログラムの処理にかかる時間を比較してみることにしました。
 今回は以下の、16進数を10進数に変えるプログラムを用いました。参考までに、コメントでいただいた他のプログラムも使わせていただきました。

– [16進数→10進数](https://qiita.com/kim-shun/items/1efca5d3d4854d6dc66d)

“`python
def change_decimal(hexa): #【A】
nums = {‘0′:0,’1′:1,’2′:2,’3′:3,’4′:4,’5′:5,’6’:6,
‘7’:7,’8′:8,’9′:9,’A’:10,’B’:11,
‘C’:12,’

元記事を表示

ラズパイにdjangoを設定する

##ラズパイでdjangoを使用する
ラズパイをサーバーにすること、windowsと違い一筋縄でインストールがいかなかったため
備忘録として記録する

##前提条件
バージョンは以下のコマンドで確認

“`
uname -a
“`

Linux raspberrypi 4.19

その他、pythonはラズパイの基本的に備わっている
python2.7
python3.5
のほか、他の用途で使うためにpython3.8.12をいれており、
python3.8.12を普段使いに設定していた(設定の仕方を思い出したら追記します)

のちのちこのpython3.8が鬼門になった

##djangoのインストール方法及び確認方法
インストール方法

“`
python3 -m pip install django
“`

※pythonとpython3の違い。
ラズパイではpython2系も備えているため、実行時にpython3と明示的にコマンドを入力することで、
python3系を動かすことになる。
pythonコマンドでpython3系を規定で使うように設定することも可能
pip3

元記事を表示

Disocrd.pyを用いたメインカラー抽出botの作成

Disocrd.pyを使用してDiscordにアップロードされた画像からメインカラーを抽出するbotを作成する。

##方法
k-means法でクラスタリングを行います

ピクセルごとに指定されたクラスタ数でクラスタリングを行い、書くクラスタの中央の座標の色をメインカラーとします

Discord.pyのほうでは、画像と一緒に送られてくる文字が`/pic`のときに反応するようにしています。

##使用するmodule

“`py:pip
Pillow
OpenCV
sklearn.cluster
numpy
random
request
io
“`

##コード解説
######import文

“`
from PIL import Image, ImageDraw, ImageFont
import cv2
from sklearn.cluster import KMeans
import numpy as np
from numpy import linalg as LA
import random
import discord
import requests
import

元記事を表示

Fundamental Statistics for Data Science (Part 03)

This article is a continuation of [Fundamental Statistics for Data Science (Part 02)](https://qiita.com/qualitia_cdev/items/0bd5a50a73099e5384b1).

8) Covariance
Covariance measures the relationship among two random variables. Let’s assume that we have two random variables, A and B. Where respectively E(A) and E(B) represent the means of the A and B.

![cov.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579376/bab3ee34-3156-ae00-8a96-b25de08ffc11.jpeg)

Covariance values can be

元記事を表示

Blender Pythonで方向ベクトルで表される方向をクォータニオンを使って実装する

# 1.目的
方向をもつオブジェクトを特定の座標(または方向ベクトルで表現される方向)に向けたい。Unityではtransform.LookAtやQuaternion.LookRotationという関数を使うと一発でできるようなのですが、Blenderにはないようなので自力で実装する必要があります。角度といえば通常はオイラー角で表すことが多い(scene viewなど)ですが、オイラー角は計算に不向きであるため、クォータニオンを用いて実装します。

# 2.環境
Blender2.93

# 3.クォータニオンについて軽く触れる
## 1.クォータニオンでできること
日本語では**四元数**と呼ばれ、**三次元空間での回転**を表現することができます。
回転を表す方法にはほかにもオイラー角、回転行列などがありますが、まず、オイラー角はパラメータは3つしかなくメモリ消費が少ないものの計算で扱いにくいです。次に回転行列は行列なので計算はしやすいですが、パラメータが多くメモリ消費が大きいです。一方のクォータニオンは回転行列の特性を引き継いでいて計算はしやすく、パラメータが4つで表されるのでメ

元記事を表示

Pythonをインストール

## 1. Homebrewのインストール


ターミナルを開いて以下のコマンドを実行する

。

“`
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”


“`

## 2. pyenvのインストール

以下のコマンドを実行

する。

“`
$ brew install pyenv


“`

## 3. pyenvの設定

以下のコマンドを実行


“`
$ echo $SHELL


“`

・実行結果が 
/bin/bash の場合、以下4つのコマンドを実行

する。

“`
$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bash_profile


$ echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.bash_profile


$ echo ‘eval “$(pyenv init -)”‘ >> ~/.bash

元記事を表示

scikit-learn メモ

## Linear Regression
LinearRegressionを勉強するのに使った教材
【世界で37万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜
[https://www.udemy.com/course/datascience365/](https://www.udemy.com/course/datascience365/)
### 基本事項
intercept_ : 切片
coef_ : 推定係数 (coef => coefficients)

score(x,y) : 線形回帰の決定係数を返す(単回帰分析にも重回帰分析にも使える)
predict(x) : 予測値の算出

### 自由度修正済み決定係数を求める

“`math
R^{2}_{adj} = 1-(1-R^{2})*\frac{n-1}{n-p-1}
“`

“`python:adjusted_r2
reg = LinearRegression()
reg.fit(x, y)

# 決定係数
r2 = reg.score(x,y)

#

元記事を表示

整数配列と整数ターゲットが与えられた場合、2つの数値の合計がターゲットと同値になり、indexを返却する

####趣向
ターケットの値と配列の中のいずれかの値を足した数が同値の場合のindexを
返却する必要があり、結構悩みました。

####例
nums = [2,7,11,15], target = 9の場合[0,1]
nums = [3,2,4], target = 6の場合[1,2]
nums = [3,3], target = 6の場合[0,1]
nums = [3,0,3], target = 6の場合[0,2]

“`python:python3
def twoSum(self, nums: List[int], target: int) -> List[int]:
stay = {}
for index, number in enumerate(nums):
difference = target – number
if difference in stay:
return [stay[difference], index]
el

元記事を表示

cv2.VideoCapture(0)をしても内蔵カメラの動画が取得できない時の対処法

## やりたいこと
macの内蔵カメラの動画を取得したい

## コード

“`
capture = cv2.VideoCapture(0)

while(True):
# フレームのキャプチャ
ret, frame = cap.read()

# 結果のフレームを表示
cv2.imshow(‘frame’,frame)
“`
## 問題

“`
Traceback (most recent call last):
cv2.imshow(‘frame’,frame)
cv2.error: OpenCV(4.5.3)
error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘imshow’
“`

ネットの記事などを探し回ったところ、どうやらcv2.VideoCaptureがうまくいいっていないらしい。
これはopenCVで画像取得をしようとして、URL誤字をしたなどでも同じエラーになる。

## 解決方法

openCVのdocを見たとこ

元記事を表示

python pyenv 切り替え

Djangoを入れようとしたら、pythonのversionが合わないと言われpythonのversionを変えようと思った。
しかし、versionの切り替えに詰まったのでまとめます。

環境:
mac big sur
zsh 使用

zshに以下を記述。
`if which pyenv > /dev/null; then eval “$(pyenv init -)”; fi
`

これで、macの標準のpythonを使わせることを取りやめ、pyenvのpathを読ませる記述らしい。

参考:
https://teratail.com/questions/289984

元記事を表示

Pythonでwebスクレイピング 環境構築からスクレイピングまで2

# Webスクレイピングの基礎2
前回は`Beautiful Soup 4`を使用したスクレイピング方法について紹介しました。

https://qiita.com/hiroshima-bank/items/70471572bcc6bad9d026

`Beautiful Soup 4`はログイン不要なWebサイトのスクレイピングに適したライブラリとなっています。
今回は、ログイン処理までを行うスクレイピングに適しているライブラリである`Selene`について紹介していきます。

## 1. Seleneについて

### [Selene](https://github.com/yashaka/selene) とは?
`Selene`は、`Selenide`というJava用のライブラリの`Python`用のラッパーです。
これらのライブラリはすべて、Webブラウザを自動操作させたUIテストツールを実現するものとして開発されてきました。
しかし、実際にはUIテストツールとしてではなく、Webスクレイピング目的としても非常に有用なライブラリとなっています。

### `S

元記事を表示

Python3: Lambda で DynamoDB を使う

こちらのプログラムを Lambda で使えるように書き換えました。
[Python3: DynamoDB を使う](https://qiita.com/ekzemplaro/items/e7e566a079c677d4e0fc)

city という名前のテーブルを作成

“`py:dynamo_create_table.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# dynamo_create_table.py
#
# Sep/20/2021
# ——————————————————————–
import sys
import json
import boto3
#
# ——————————————————————–
def create_table_proc(name_table):
dynamodb = boto3.resource(‘dyn

元記事を表示

【備忘録】Yahoo!ローカルサーチAPIで牛丼チェーン店の位置情報を取得してdeck.glで表示してみました

# はじめに
– [Yahoo!ローカルサーチAPI](https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/localsearch.html)で牛丼チェーン店の位置情報を取得して[deck.gl](https://deck.gl/)で表示してみました。
– Yahoo!ローカルサーチAPIでは「丼もの、牛丼、親子丼(業種コード:0101031)」で絞り込み、位置情報を取得しています。
– 取得した牛丼チェーン店の位置情報はエクセル等で「すき家」「吉野家」「松屋」で抽出してdeck.glで表示しています。

# アウトプットイメージ

元記事を表示

Pythonで「年」と「月」の情報を抽出する。

## やりたいこと
2021-04-01のような日付の表記から「年」や「月」の情報を抽出する

## 環境
Google Colaboratoryを使用しました。

## 使用した関数
・pandas.Series.apply()
 →Pandasの各要素に関数を適用する

・str.split()
 →Pandasの文字列を区切り文字で分割

## コード

###Step1:DataFrameの作成

“`python:
#日付型のカラムの作成
import pandas as pd

list1=[“2021-04-01″,”2021-04-01″,”2021-04-01”]
columns1=[“日付”]
df=pd.DataFrame(data=list1,columns=columns1)
df
“`

###Step2:-(ハイフン)で日付を分割し、「年」と「月」のカラムに代入する。
“`python:
df[‘年’]= df[‘日付’].apply(lambda x: x.split(‘-‘)[0])
df[‘月’]= df[‘日付’].apply(lambda

元記事を表示

競技プログラミング時に便利なスニペット(python3版)

はじめまして、とあるIT会社の2年目社員です。
入社して一年半が過ぎ、仕事にも慣れてきたため自己学習に時間と体力を割く余裕が出てきており、
最近[Paiza](https://paiza.jp/challenges)にてアルゴリズムの勉強を行っています。
そこで思ったのですが、どうやら競技プログラミングの問題には

* アイディアレベルで処理の流れを考える力
* 上記を実際にプログラムに落とし込む力

の二つが必要なようです。
特に競技中に後者の部分で詰まって時間がかかってしまうのはもったいないと思われます。
そこで今回は、競技プログラミング時に便利なコードをまとめてみました。
言語についてはpython3を対象としています。

#入力
###一行の入力全体を文字列として受け取る
input

“`python
# helloを標準入力にて渡す
a = input()
print(a) # helloと出力される
“`

### スペース区切りの複数入力の受け取り(受け取り変数を分ける)
split(区切り文字)

“`python
# hello worldを標準入力にて渡す

元記事を表示

[Python3] 初心者の初心者による「ユーザー定義関数」解説

#ユーザー定義関数とは
繰り返し使用する処理や、コード全体を見やすくするために使用します。
また、**「自作関数」**とも呼ばれ、自分で作成する関数です。

#ユーザー定義関数の書式
“`python:書式
def 関数名(引数):
# インデント(半角空白4個)が必要
処理1
処理2
処理3
return 戻り値

# 戻り値の取得
変数 = 関数名(引数)
“`

上記が、ユーザー定義関数の書式です。

では、実際の使用方法について説明いたします。

# 使用方法
randomモジュールを使用し足し算の計算問題を10個作成するプログラムのコードを作成しました。
以下のコードを使用し説明いたします。

“`python:例
# randomモジュールをインポートする
from random import randint

# ユーザー定義関数の作成
def getnum():
num = randint(1,100) # random関数を使用し、値を取得
return num

元記事を表示

【随時更新】プログラム初心者に伝えたい、これだけはやっておいてくれというポイント [#Python 編]

## 前提
データサイエンス・機械学習にあこがれてプログラミングを始めた人に、これだけはやっておいて欲しいという計算研究者からの願いを書いておきます。前職のラボ後輩たちが研究成果を外部公開できる形にまとめられていないのがもったいないなと思ったことがあるので、私の思いつくTipsをまとめます。

開発時から実践しておくと開発時間が短縮されるものもあるので試してください。なおVisual Studio Codeの利用は網羅できていません。

### `logging` を最初から使ってログを出しておく

デバッグ作業をするときにログは重要です。
どこまでの処理が走っていて、どこの処理で躓いているのかを明らかにできます。pythonでは少なくともバージョン3.7以降標準ライブラリとして`logging`があり、`import logging`でいつでもログ出力のライブラリが利用できます。関数やクラスを書いたら`logging`を仕込んで置くのが無難です。`logging`のログレベルをいじれば、出力したいログの種類を制限できます。これにより開発環境と本番環境でloglevelを変えれば見せ

元記事を表示

【競プロ典型90問】012の解説(python)

## 概要
[競プロ典型90問](https://atcoder.jp/contests/typical90)の解説記事です。
解説の画像を見ても分からない(~~理解力が足りない~~)ことが多々あったので、後で解き直した際に確認できるようまとめました。

## [問題012-Score Sum Queries](https://atcoder.jp/contests/typical90/tasks/typical90_l)

### 問題概要
白で塗られたH×Wのマス目に対して、以下の2パターンのいずれかのQ個のクエリを処理する。
1. 白いマス(r, c)を赤で塗る
2. (r1, c1), (r2, c2)の2点が与えられた時、以下の条件をどちらも満たしているか判定する
– 2点が共に赤く塗られている
– 2点が赤いマスを辿っていけば、連結している

### 解き方
この問題は、**Union-Find**を知っているか知らないかの問題です。
一応、簡単に説明すると、Union-Findとは、グループ分けの管理を非常に高速に実装できるデータ構造で、
ある集合のグルー

元記事を表示

Kinesis データストリームを DynamoDB で保存

Kinesis データストリームを DynamoDB で保存する Lambda の環境構築です。

Kinesis データストリームの作成はこちら
[AWSIOT: デバイスデータを Kinesis データストリームに送信](https://qiita.com/ekzemplaro/items/d9b2689b4c6c1b038300)

Lambda のプログラムはこちらです。
[lambda_function.py](https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/aws-iot-core-workshop/lambda_function.py)

次の5ステップになります。
1) DynamoDB でテーブルを作成
>テーブル名 table_sep19

>|キー|名前|型|
>|:—————–|:——————|:——————|
>|ハッシュキー |deviceid |String |
>|レインジキー |timestamp |Str

元記事を表示

ABC219 D問題解説 (python)

## 概要
AtcoderのABC219のD問題が(おそらく)あと一歩のところで解けず、非常に悔しい思いをしたので、
忘れないよう記事にまとめました。

### 問題文

> N 種類の弁当が、それぞれ 1 個ずつ売られています。
i=1,2,…,N について、i 種類目の弁当には Ai個のたこ焼きと Bi個のたい焼きが入っています。
高橋君は、 X 個以上のたこ焼きと Y 個以上のたい焼きを食べたいです。
高橋君がいくつかの弁当を選んで買うことで、 X 個以上のたこ焼きと Y 個以上のたい焼きを手に入れることが可能かどうか判定して下さい。また、可能な場合はそのために高橋君が購入しなければならない弁当の個数の最小値を求めて下さい。
各種類の弁当は 1 個しか売られていないため、同じ種類の弁当を 2 個以上購入することは出来ないことに注意して下さい。

### 制約
>$1≤N≤300$
$1≤X,Y≤300$
$1≤Ai,Bi≤300$
入力はすべて整数

引用元:[Atcoder-ABC219 D問題](https://atcoder.jp/contests/abc219/tasks

元記事を表示

OTHERカテゴリの最新記事