Python関連のことを調べてみた2022年01月15日

Python関連のことを調べてみた2022年01月15日

Grasshopper で Shift JIS 形式のテキストデータを読み込む

#はじめに
Grasshopper の ReasdFileコンポーネント でCSVデータを読み込んだら文字化けしてしまった。Shift JIS のテキストデータはエンコード指定が必要と教えていただいたのでやってみた。(kanano さんありがとうございます!)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/3fcdfab1-d419-668a-0eb6-effdb3e8efb1.png)

【Django】SNS app作成手順01-初期設定

snspjというプロジェクトを作成する際のコマンドを記していく

———-初期設定———-

django-admin startproject snspj .

python3 manage.py startapp snsapp

———-Settings.pyの中身を編集———-

INSTALLED_APPS の中へ追記
‘snsapp.apps.SnsappConfig’

TEMPLATESの’DIRS’:の後に追記

[BASE_DIR / ‘templates’],

—————snsappフォルダにもurls.pyを追加———-

—————snspj-urls.pyの内容をsnsapp-urls.pyへコピー———-

—————urls.pyの中身を編集———-

urlpatterns の中へ追記
path(”,include(‘snsapp.urls’))

元記事を表示

【Project Euler】Problem 30: 各桁の5乗の和

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 30:各桁の5乗の和

原文 [Problem 30: Digit fifth powers](https://projecteuler.net/problem=30)

**問題の要約:各桁の5乗の和が元の数と同じになる数の合計を求めよ**

この問題では数の範囲が指定されていないので、どこまで調べれば良いかがポイントですね。桁数が$d$のとき各桁の5乗の和の最大値は$(9^5 \times d)$となるのでプログラムで調べてみると。

“`python
for d in range(1,8):
print(f”digit={d}, {10**(d-1)}-{10**d-1} {1}-{9**5*d}”)
d=1, 1-9 1-59049
d=2, 10-99 1-118098
d=3, 100-999 1-

元記事を表示

Python selfの型を使う方法

# メソッドの返り値の型をselfにする方法
というのも例えばクラスのメソッドの返り値で`self`を返す時にその`self`を表す型をアノテーションに付けたいということがあることがあります。
例えば以下のようなユーザーを表す`User`クラスがあったとします。

“`python
from typing import Optional

class User:
“ユーザークラスです。”

name: str
id: int
description: Optional[str] = None
age: Optional[int] = None

def __init__(self, name: str, id: int):
self.name, self.id = name, id

def update_profile(self):
“ユーザーのプロフィールを取得してこのクラスを拡張します。”
# ここでユーザーのプロフィールを取得する。(便宜上ここでは変数の代入で表します。)

元記事を表示

【Project Euler】Problem 29: べき乗の値

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 29:べき乗の値

原文 [Problem 29: Distinct powers](https://projecteuler.net/problem=29)

**問題の要約:$2 \leq a, b \leq 100$ のとき$a^b$の値の数を求めよ、ただし重複はかぞえない**

Pythonでは2重ループはitertools、重複を除くのはsetを使うと簡潔に書けますね。

“`python
from itertools import product
ab = range(2, 100+1)
print(f”Answer : {len(set([a**b for a, b in product(ab,repeat=2)]))}”)
“`

(開発環境:Google Colab)

元記事を表示

【Project Euler】Problem 28: 数のらせんの対角線

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 28:数のらせんの対角線

原文 [Problem 28: Number spiral diagonals](https://projecteuler.net/problem=28)

**問題の要約:図のように1から順番にマスにらせん状に書いて行ったとき1001 x 1001のマスが埋まったときの対角線の数の合計を求めよ**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1922159/8571feca-56db-c5cf-accd-ba64b2f9b13d.png)

なんとなく規則性はつかめそうに思えますが。まず規則通りにマスを埋めるプログラムを書いてみます。

“`python
import numpy as

元記事を表示

【Project Euler】Problem 27: 二次式の素数

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 27:二次式の素数

原文 [Problem 27: Quadratic primes](https://projecteuler.net/problem=27)

**問題の要約:$|a|,|b|<1000$のとき$n^2+an+b$が$n=0,1,2,3,\dots $のとき連続して素数となる最長の時の$a,b$の積を求めよ** まずは全探索で答えを探してみます。すべての$|a|,|b|<1000$で連続する素数の数を求めて最長のものの[連続素数の数、a, b, a*b]を出力します。結果は連続素数が71となりました。 ```python import itertools from sympy import isprime N = 1000 maxConsPrimes = [0,0,0,0] AB = ran

元記事を表示

Google ColaboratoryでStreamlitとReactを接続する。

Streamlitではボタン、フォームなどの標準UIのみで簡単にwebアプリを作ることができます。しかし少し凝ったレイアウトやJavaScriptを使いたい場合にはReactと連携します。

Streamlit+Reactの実装例は公式の`Components`から見ることができます。

https://streamlit.io/components

各プロジェクト画像 *or* タイトルからgithubのリポジトリへ行けます。すべてのプロジェクトがReactと連携しているわけではありませんが、プロジェクトと思わしきディレクトリ内に`frontend`というディレクトリがあればそのプロジェクトがReactと連携している手掛かりとなります。

# チュートリアル

React開発環境の構築は`Create React App`で行うと簡単ですが、Streamlit.ioでも同じようなビルド環境が提供されています。

https://streamlit-components-tutorial.netlify.app/introduction/project-setup/

ローカル環境で

元記事を表示

alpha付き画像の背景を白塗りするやつ

“`python
import cv2
img = cv2.cvtColor(cv2.imread(“alphaimg.png”, -1), cv2.COLOR_BGRA2RGBA)
img, mask = img[…,:3], img[…,3:] / 255.
img = (img * mask + np.ones(img.shape)*255 * (1. – mask)).astype(np.uint8)
“`

元記事を表示

Python Matplotlibで基本的なグラフを書いてみる

#はじめに
 こんにちは、この記事はPC初心者がプログラミングの勉強のために書いたものとなっています。予めご了承ください。今回は、Pythonの matplotlib を使用して基本的なグラフの書こうと思います。

#開発環境
・Windows11
・Visual Studio Code
・Python 3.9.2
・matplotlib 3.4.3
・numpy 1.21.2

#数式のグラフ化
y = 2x^2 + 5x – 8 の数式を書いてみます。

“`python:コード
import matplotlib.pyplot as plt
import numpy as np
#ライブラリのインポート

# y = 2x^2 + 5x – 8 の数式を書く

x = np.linspace(-5, 5, 100)
# linespace 配列を書く
#第一引数: 最小値、第二引数: 最大値、第三引数: 分割数

y = 2*x**2 + 5*x – 8

plt.plot(x, y)

#対応する2つの配列の要素同士の点を結ぶ
plt.show()
#グラフの表示
“`
`

元記事を表示

Google Drive上にあるCSVファイルをGoogle Colabratoryで読み込む

# Google Drive上にあるCSVファイルをGoogle Colabratoryで読み込む
## 目的
最近、Jupyter NotebookからGoogle Colabratory PROに環境を変えたので、備忘録として残します。
## Google Driveへのマウント
まず、Colabに以下のコードを入力し、Google DriveをColab上で読み込めるようにします。(Shift + Enterでコード実行)

“`
from google.colab import drive
drive.mount(‘/content/drive’)
“`
ここで、Googleから
![スクリーンショット (324).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152634/c4ecc6ba-9908-f7bd-d48c-9d36045b6b7c.png)

Google ドライブに接続を選択します。

次に、Googleアカウントログイン画面に移動するので、ログイン手続きをします。

元記事を表示

pandasのデータフレームを結合するときにグラフをプロットすることを前提だとどうすればいいか

#はじめに

pandasって便利ですよね
私は特にグラフの作成に使用しています。
様々なグラフを重ねて表示させるにはどうすればいいでしょうか。

#元のデータ

今回用意したデータがこちらです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/993303/894d67cc-12dd-e967-75d1-4f1890e5474c.png)

そしてこれをグラフにしたものがこちらです。

“`.py
aaa.plot(x=”x”,y = “ex10″, xlim=[-2, 4], ylim=[0,0.01])
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/993303/52e4c4c9-8783-a6a3-43cc-fff94217c0f8.png)

さらに、追加でこんなデータや、

“`.py
bbb.plot.scatter(x=”x”,y = “ex1”,

元記事を表示

Django REST Frameworkの初期設定

Django REST Frameworkをインストールする

“`terminal
$ pip install djangorestframework
“`

プロジェクトの**settings.py**の`INSTALLED_APPS`に追加する。

“`python:settings.py
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘rest_framework’, # 追加!!!
]
“`

ひとまず、以上。

元記事を表示

pixiv_downloader2.0追加について(番外編4)

#はじめに

pixivから画像をダウンロードするプログラムを作っているのですが、ほぼ1から作り直したので変更点を書いていこうと思います。

なお、以前の今では動かないプログラムをver1.0、
今回作り直したプログラムをver2.0としています。

###以前のプログラムver1.0

https://qiita.com/yuki_2020/items/acad0a1e1939dccdde59

###新しいプログラムver2.0

https://qiita.com/yuki_2020/items/716fa4e4ada65306f688

https://github.com/yuki-2000/pixiv_downloader

#全体的な変更点

##変数の名前の変更

全体的に、pixivpyに準拠した変数名や直感的な変数名に変えました。

##バッチファイルを追加した

毎回コマンドプロンプトから実行するのは面倒なので、windows用のバッチファイルを作ってgithubにあげています。

##githubを使うようになった

今まではqiitaのコードをコピ

元記事を表示

幅優先、深さ優先探索

いろんなところで使えそうなアルゴリズム
アルゴリズムの説明についてはせずに、単純にコードなどを書き記しておきます。
使用言語はPython3.10. match文を使います。

# 準備
“`python
from collections import deque
“`

迷路作成

開く

“`python
class Position:
EMPTY = ‘.’
BLOCK = ‘#’
GOAL = ‘G’
START = ‘S’
CHECKED = ‘o’

maze = “””
############
S.#…###..#
#…#.#.#.##
#.#.#…#.##
###.#.#.#.##
#…###…##
#.#.#…#.##
###.#.#.####
#…#.###..G
###.#…#.##
#…###.#.##
##.####..

元記事を表示

駒の顔画像を自動収集する【スクレイピング – Scrapy編】

# はじめに
こんにちは。逆転オセロニアのYouTubeチャンネル「まこちゃんねる」の中の人です。
本稿では、**[公式wiki](https://xn--cckp5c6czi2302avwxa.gamematome.jp/game/964/wiki/%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8)から駒の顔画像を自動収集すること**を目標にします。
今回はPythonの**スクレイピング**フレームワーク、**Scrapy**を利用してみます。

# モチベーション
– オセロニアを題材にしていく上で、画像収集する場面が多いため
– Pythonでスクレイピングを実装したことが無かったので、その練習のため

# スクレイピング(Scraping)とは?
> ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。
> [ウェブスクレイピング – Wikipedia ](https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B9%E3%82%

元記事を表示

DataFrameのリスト要素をNaNが含まれていても結合する方法

DataFrameのリスト要素を結合するとき、要素の値として`NaN`が含まれていると、結果は`NaN`になります。

“`python:期待通りに動かないコード
import pandas as pd
import numpy as np

df_test = pd.DataFrame({
“data1” :[[“1″,”2″,”3”],[“1″,”2″,”3”]],
“data2” :[[“4″,”5″,”6”],[“4″,”5″,”6”]],
“data3” :[[“7″,”8″,”9”],np.nan]
})
result = df_test[“data1”]+ df_test[“data2”]+ df_test[“data3”]
print(result)

# 結果
# 0 [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 1 NaN ← [1, 2, 3, 4, 5, 6] としたい
“`

単純に`fillna()`を使って`NaN`を空リストに変換しようとすると

元記事を表示

コンピュータとオセロ対戦38 ~係数、局所探索~

https://qiita.com/tt_and_tk/items/068f2afde6db637e189f

[前回](https://qiita.com/tt_and_tk/items/753fe2fad62b9fad5aae)

# 今回の目標
[前回](https://qiita.com/tt_and_tk/items/753fe2fad62b9fad5aae)作成したニューラルネットワークを用いて、新しい構想でのAIを作成する。
# ここから本編
前回も説明した通り、新しく作るAIは、今までのAIの考え方とnleastを融合させます。
つまり、

* 深層学習モデルを用いて、現在の盤面から最終結果を予測する
* 深さ優先探索を用いて、先のターンで相手がとれる手数を得る

という二つの動作を行い、そして、得られた予測値と手数から総合的な「勝利係数」を計算し、その結果が最も高い位置に置くという考え方をします。

計算方法は以下の通りです。

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

元記事を表示

PythonでSeleniumとTorの合わせ技

# 前置き
2021年10月頃の ↓ コレをアップデートしたもの。

https://qiita.com/kawagoe6884/items/2c4a2476db65e9bedb89

自分が書いた過去の記事を再度見ると
「回りくどいことやってんなー」とかあるあるなんですかね

~~Githubにもあげたが、使い勝手が分からず投げ出したい。~~
https://github.com/kawagoe6884/scraping-with-tor

# README
### Name
scraping-with-tor
アクセス過多によるサーバーから接続規制を回避する。

### DEMO
用意する予定は今のところ無し。

### Features
とある1行のコメントアウトの切り替えでTorを使うか使わないか決める。
気晴らし程度だが、ヘッダーにランダムなユーザーエージェント。
ついでに ”navigator.webdriver=undefined” の設定も織り込み済み。

### Requirement
* Windows10 64bit
* Python 3.8.7 64-bit

元記事を表示

OTHERカテゴリの最新記事