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

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

Djangoで画像が表示されない原因【urls.pyが間違っていた】

無駄にハマったので記しときます。

Next.js と Djangoでアプリを作っていて、画像を表示しようと思った時にハマりました。

人によって原因は違うと思いますが、僕は

“`python:urls.py
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
“`
この記述を間違った`urls.py`に記載していました。

というのも、

・app
 ・urls.py
・project
 ・url.py ←こっちに記載しないといけなかった。

というだけでした。

なので、最終的に以下のように書いたら画像が表示されました。

“`python:urls.py
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘api/’, include(‘app.urls’))
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.M

元記事を表示

機械学習の実験サイクルを2倍にする3つの要素と工夫たち

この記事は朝日新聞社 [Advent Calendar 2022](https://qiita.com/advent-calendar/2022/asahi)の第14日目の記事です。
毎日、朝日新聞社のエンジニアがバラエティに富んだテック記事をお届けしております!

本日はメディア研究開発センターの松山が、機械学習の実験サイクルを早める工夫についてお届けします!

### 機械学習の実験は、時間がかかりますよね?
初めまして、9月から機械学習に本格入門した松山です。
機械学習を行う際、学習にかかる時間を有効活用できなかったり、コーディングに時間がかかってしまうといった悩みはありませんか?私はそうでした。
そんな私が先輩に相談しながら試行錯誤して辿り着いた、__2倍ほど実験のサイクルが早まった方法__ をお伝えします。

本文は、以下の人を対象とします。

– 機械学習の待ち時間を有効活用できていない
– 行き当たりばったりで学習のプログラムを書いている
– 実験が増えた際のファイル管理が困難になっている

これらの悩みを持つ人の役に立てれば幸いです。

## なぜ機械学習の実

元記事を表示

右も左も分からないような初心者がFuctional APIで翻訳機を作ってみた。

# はじめに
現在 n高等学校に通ってる者です。
Keras初めたての右も左もわからないかつ、
プログラミングもそこまでやってるわけではない初心者が
試行錯誤の末、架空言語の性能の悪い翻訳機を作った記事です。
記事を書くのも初めてなので、至らぬ点も多々あるかと思いますが、
少しでも同じ初心者の方の参考になれば幸いです。

# もくじ
– 動作環境
– 学習用データの用意
– データ作り
– 学習
– 実行
– まとめ
– 全コード
# 動作環境
– mac OS Big Sur
– anaconda Navigator 1.10.0
– Jupyter Notebook 6.4.3
– Keras 2.3.1
– TensorFlow 2.0.0
– numpy 1.19.2

# 学習用データの用意
今回使用した学習用データは
日本語と架空言語の対訳データで、
英語で表すなら
“`wordlist_fl.txt
sushi
I like sushi.
I’m from Japan.
“`
“`wordlist_ja.txt
すし
わたしはすしがすきです
わたしはにほんからきまし

元記事を表示

paizaラーニング「【配列の検索】何個ある? Boss Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__search_count_boss
#### 私の解答
“`Python3
N, M = map(int,input().split())
li = [int(x) for x in input().split()]
print(li.count(N))
“`
#### 解答例1
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])

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

ans = 0
for a in A:
if a == N:
ans += 1

print(ans)
“`
#### 解答例2
“`Python3
N, M = map(int, input().split())
A = [int(x) for x in

元記事を表示

paizaラーニング「何個ある? 2 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__search_count_step2
#### 私の解答
“`Python3
n = int(input())
li = [1, 2, 5, 1, 4, 3, 2, 5, 1, 4]
print(li.count(n))
“`
#### 解答例1
“`Python3
N = int(input())
li = [1, 2, 5, 1, 4, 3, 2, 5, 1, 4]

ans = 0
for ele in li:
if ele == N:
ans += 1

print(ans)
“`
#### 解答例2
“`Python3
N = int(input())
li = [1, 2, 5, 1, 4, 3, 2, 5, 1, 4]

print(li.count(N))
“`

元記事を表示

paizaラーニング「何個ある? 1 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__search_count_step1
#### 私の解答
“`Python3
li = [1, 2, 2, 1, 2, 1, 2, 1, 1, 1]
ans = 0
for i in range(len(li)):
if li[i] ==1:
ans += 1
print(ans)
“`
#### 解答例1
“`Python1
li = [1, 2, 2, 1, 2, 1, 2, 1, 1, 1]

ans = 0
for ele in li:
if ele == 1:
ans += 1

print(ans)
“`
#### 解答例2
“`Python3
li = [1, 2, 2, 1, 2, 1, 2, 1, 1, 1]
print(li.count(1))
“`

元記事を表示

paizaラーニング「何番目にある? 3 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__search_i-th_step3
#### 私の解答
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])
li = [int(x) for x in input().split()]
for i in range(M):
if li[i] == N:
print(i + 1)
“`
#### 解答例1
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])

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

for i in range(M):
if A[i] == N:
print(i + 1)
“`
#### 解答例2

元記事を表示

paizaラーニング「何番目にある? 2 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__search_i-th_step2
#### 私の解答
“`Python3
n = int(input())
li = [1, 5, 9, 7, 3, 2, 4, 8, 6, 10]
for i in range(len(li)):
if li[i] == n:
print(i + 1)
“`
#### 解答例
“`Python3
N = int(input())
li = [1, 5, 9, 7, 3, 2, 4, 8, 6, 10]

for i in range(len(li)):
if li[i] == N:
print(i + 1)
“`

元記事を表示

Raspberry Piを使って温度・湿度を記録する

# サマリー(この記事でやること)
– Raspberry PiにDHT22のドライバをインストールする。
– Raspberry Piと温湿度センサ(DHT22)を使って温度・湿度を確認する。
– 取得した温度・湿度をcsv形式で書き出す。
– 一連の動作をcronを用いて定期実行する。
# 経緯
 普段、洗い物の乾燥は風呂場に除湿機を置いてやるのだが、冬場は除湿機の性能が落ちるため、1日除湿機を稼働させても服が乾ききらないということが多い。そこで、除湿機がどのような環境(室温・湿度)で稼働しているのかモニタリングすることにした。
# 環境
## 使用機材
– Raspberry Pi 4 Model B / 4GB(Element14製)
– 温湿度センサ([DSD TECH DHT22](www.amazon.co.jp/dp/B07CM2VLBK))
![YEP04704.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2676391/b45ccb24-577b-d043-9475-2a6122a

元記事を表示

【Python】勉強メモ-その4 スクレピング結果のCSV書き込み

### 1.はじめに
今まで、リストとリストをCSVファイルに書き込む学習をしてきました。
そこで、少し実践的に、スクレイピングした結果(yahooのトップページ)をCSVファイルに書き込む
サンプルを掲載します。

### 2.writerow()によるCSV出力
注意点として
writerow()は、リストを入れなければならないので、
writerow(elem.text, elem.get(“href”))としては、ダメ!!
writerow([elem.text, elem.get(“href”)])と、`[]`を使ってリストにしましょう!!
“`sample_01.py
import csv
import requests
from bs4 import BeautifulSoup

url = “https://www.yahoo.co.jp/”
res = requests.get(url)

soup = BeautifulSoup(res.content, “html.parser”)
print(soup.text)

topics = soup.find(id

元記事を表示

paizaラーニング「何番目にある? 1 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__search_i-th_step1
#### 私の解答
“`Python3
li = [1, 10, 2, 9, 3, 8, 4, 7, 5, 6]
for i in range(len(li)):
if li[i] == 8:
print(i + 1)
“`
ほぼ同じになりました。
#### 解答例
“`Python3
li = [1, 10, 2, 9, 3, 8, 4, 7, 5, 6]

for i in range(len(li)):
if li[i] == 8:
print(i + 1)
“`

元記事を表示

paizaラーニング「配列に含まれている? 3 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__search_include_step3
#### 私の解答
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])
li = [int (x) for x in input().split()]
output = False

for ele in li:
if ele == M:
print(“Yes”)
output = True
break

if not output:
print(“No”)
“`
#### 解答例
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])

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

元記事を表示

paizaラーニング「配列に含まれている? 2 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__search_include_step2
#### 私の解答
“`Python3
n = int(input())
li = [5, 12, 6, 84, 14, 25, 44, 3, 7, 20]
output = False

for ele in li:
if ele == n:
print(“Yes”)
output = True
break

if not output:
print(“No”)
“`
前の解答例を参考にしたので、ほぼ同じになりました!
#### 解答例
“`Python3
N = int(input())
li = [5, 12, 6, 84, 14, 25, 44, 3, 7, 20]
output = False

for ele in li:
if N == ele:
print(“Yes”)
output = True

元記事を表示

paizaラーニング「配列に含まれている? 1 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__search_include_step1
#### 私の解答
“`Python3
a = [10, 13, 21, 1, 6, 51, 10, 8, 15, 6]
b = 0

for i in a:
if i == 6:
b = b + 1
if b >= 1:
print(“Yes”)
else:
print(“No”)
“`
#### 解答例
“`Python3
li = [10, 13, 21, 1, 6, 51, 10, 8, 15, 6]
output = False

for ele in li:
if ele == 6:
print(“Yes”)
output = True
break

if not output:
print(“No”)
“`

元記事を表示

paizaラーニング「【二次元配列の入出力】i番目の出力 Boss Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_i-thoutput_boss
#### 私の解答
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])
K = int(values[2])
L = int(values[3])

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

print(A[K – 1][L – 1])
“`
前の問題の解答例を参考にしたので、同じになりました!
#### 解答例
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])
K = int(values[2])
L

元記事を表示

python 辞書の欠損処理について

## 辞書の欠損処理の方法

例題として、好きなプログラミング言語についてエンジニアの方々にアンケートを取り、これを辞書で定義します。もともと、プログラミング言語が登録されていない場合は、新たに作成して値を増やしていく。

~~~python:exam.py in方式
questionnaire = {
“python”: 1,
“Rust”: 2,
“C”: 0
}

print(‘アンケート前:’, questionnaire)
key = “SQL”

if key in questionnaire:
count = questionnaire[key]
else:
count = 0

questionnaire[key] = count + 1
print(‘アンケート後:’, questionnaire)

>>>
アンケート前: {‘python’: 1, ‘Rust’: 2, ‘C’: 0}
アンケート後: {‘python’: 1, ‘Rust’: 2, ‘C’: 0, ‘SQL’: 1}
~~~

~~~python:exam

元記事を表示

Flask と PostgreSQL Serverの接続覚書

# 環境作成

“`bash
# 仮想環境の作成 + activate
$ python -m venv flask_to_postgresql
$ cd flask_to_postgresql/Scripts
$ ./activate

# 必要なパッケージ取得
$ python -m pip install –upgrade pip
$ pip install flask psycopg2-binary

# 環境確認
$ python –version
Python 3.9.13
$ pip list
Package Version
—————— ——-
click 8.1.3
colorama 0.4.6
Flask 2.2.2
importlib-metadata 5.1.0
itsdangerous 2.1.2
Jinja2 3.1.2
MarkupSafe 2.1.1
pip

元記事を表示

pandasのDataFrameから特定の列(前方一致/後方一致)を抜き出し、削除、分割する

アンケート分析でたまにpython&pandasを使用しています。
分析の前処理でカテゴリ変数を変換したり、いらない列を削除したりする必要があるのですが、全てのDataFrameに同じ処理をするわけではないので、抽出して処理をして、また戻す、といったことを頻繁にやっています。
列を抽出(指定)する方法としてindexや列名指定などの方法がありますが、それぞれ
* 数値(index)指定:間違いやすいし、操作すると位置が変わってしまう
* 列名指定:列名を正しく全て列挙するのが大変(日本語アンケートの列名は長くなりがち・・)

という問題があり、前方一致や後方一致で一括処理できると便利なのになーと思っていました。

検索ですぐに良いやり方が見つからなかったので、試行錯誤してみました。
もっと良いやり方をご存知の方はコメントしてもらえるとありがたいです。
## 操作するDataFrame

サンプルとして、以下のようなDataFrameを操作していきます。

“`python
import pandas as pd
df = pd.DataFrame(
data={

元記事を表示

9年目くらいのいまだ続いているレガシーなプロジェクトで改善してきたことと抱えている多くの課題

最初のgitのコミットから約8年?経過し9年目に突入しているのでは・・・というレガシー感の溢れるプロジェクトを引き継いでから何年もかけて色々改善してきた内容だったり、逆に現在でも色々抱えていて今後改善していきたい課題などについて本記事で振り返り的に触れていきます。

※執筆に関して上長から許可をいただいています。

# プロジェクトの概略

– 弊社がゲーム会社なのですが、各ゲームタイトルで横断で使われているwebアプリです。
– 言語としては主にPython、フレームワークとしては主にDjangoが使われています。
– テストやdocstringなどを含めた現在残存するPythonファイルの行数は約78万行くらいです。
– サーバーはAWSのクラウドが使われています。

年数的に色々レガシー感のある点がたくさん残っていますが、一方でここまで長い間社内で使われ続けてきている・・・というのは中々無いケースでしっかり続いてきたのは良いことだと思います(大体のプロジェクトは数年で終わってしまったり、会社自体も10年持たないケースも世の中では多いでしょうし)。

# 引き継いだ当初の状況

元記事を表示

OpenCVとMatplotlibでAR(拡張現実)する

## OpenCVとMatplotlibでAR(拡張現実)できるか挑戦してみた

去年のアドベントカレンダーでは[100行で作るAR](https://qiita.com/suo-takefumi/items/231a6f97cd880fe629a5)と題して、できるだけシンプルにARを実装する挑戦をしました。
今年は、MatplotlibでARを実装する挑戦をしました。
OpenCVで3Dデータを用いたARにはOpenGLを使うことがよくあると思いますが、OpenGLを使用せずMatplotlibの3DグラフでARができないか挑戦しました。

## 完成デモ

完成したものはこちらです。ARで描画しているのはMatplotlibの3Dグラフです。ARマーカーの傾きに応じグラフの見え方も変わっているのがわかるでしょうか。