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

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

Cropping Image

# はじめに
画像をCroppingするコードを書いておきます。

#コード

“`python
img_cropped = img[top:bottom, left:right]

# cx : cropする赤い枠の中心座標x
# cx : cropする赤い枠の中心座標y
# h : 赤い枠の高さ
# w : 赤い枠の幅

top = int(cy – 0.5 * h)
bottom = int (cy + 0.5 * h)
left = int( cx – 0.5 * w)
right = int( cx + 0.5 * w)

“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208980/d4b7a1ac-29e8-81ba-6703-d83c583d4b3e.png)

元記事を表示

pyenv + virtualenv + mmcvのインストールエラー

# はじめに
Pyenv+Virtualenvで環境構築をしていて、mmcv-fullをインストールしようとしたらエラーが出た人向け。

# 現象
インストールすると、cmath系のエラーがたくさん出る。

“`bash
$ pip install mmcv-full
……<省略>
de/ATen/core/aten_interned_strings.h:633:9: note: expanded from macro ‘FORALL_ATEN_BASE_SYMBOLS’
_(aten, signbit) \
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
error: command ‘clang’ failed with exit status 1
[end of output]

note: This error originates from

元記事を表示

Python Wheelタスクを用いてプロダクションパイプラインを簡単にデプロイする

[How to Deploy ML Production Pipelines Even Easier With Python Wheel Tasks \- The Databricks Blog](https://databricks.com/blog/2022/02/14/deploy-production-pipelines-even-easier-with-python-wheel-tasks.html)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

豊富なオープンソースエコシステムと、とっつき易い文法によってPythonは、データエンジニアリングと機械学習における主要なプログラミング言語となりました。データエンジニア、MLエンジニアはすでにPythonノートブック、Pythonスクリプトを用いてパイプラインをおーけストレートするためにDatabricksを活用しています。本日、より複雑なPythonのデータパイプライン、MLパイプラインのコードををより簡単に開発、パッケージ、

元記事を表示

Pyhton3の標準入出力まとめ+応用

# 標準入力

## 一つの行から、一つの数字を変数に

“`py:入力値
100
“`

“`py:取得方法
N = int(input())
print(N) => 100
“`

## 一つの行から、複数の文字列を配列に

“`py:入力値
M N
“`

“`py:取得方法
S = input().strip()
print(S) => [“M”,”N”]
“`

## 一つの行から、複数の数値を配列に

“`py:入力値
3 200
“`

“`py:取得方法
I = list(map(int, input().split()))
print(I) => [3,200]
“`

## 入力行数を利用し、行分の数値入力を1次元配列に

“`py:入力値
3
200
300
400
“`

“`py:取得方法
N = int(input())
S = [int(input()) for i in range(N)]
print(S) => [200,300,400]
“`

## 入力行数を利用し、各行複数の数値入力を2次元配列に

“`py:入

元記事を表示

バレンタインチョコの個数を線形回帰で予測してみました。

“`Python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

chocolates = np.array([0, 1]).reshape(1, -1).T
year = np.array([2021, 2022]).reshape(1, -1).T
model = LinearRegression()
model.fit(year, chocolates)
future = np.linspace(2021, 2050, 30).reshape(1, -1).T
plt.scatter(year, chocolates, label=”Observed”)
plt.plot(future, model.predict(future), label=”Predicted”)
plt.title(“Linear Regression”)
plt.xlabel(“Year”)
plt.ylabel(“Chocolates”)
plt

元記事を表示

AOJ Lesson – ALDS1 ALDS1_7_D “Reconstruction of a Tree” をPythonで解いたみた

AOJのLessonのReconstruction of a Treeを解いた際の備忘録です。
「AOJにある解答例は難しすぎる、、ネットでもわかりやすい解説もない、、」
という状況だったので、素人である自分に合わせた可読性の高い(?)コードを残しておきます。

## 問題
[AOJ Lesson アルゴリズムとデータ構造 Reconstruction of a Tree](https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/7/ALDS1_7_D “Qiita Home”)
> ある二分木に対して、それぞれ先行順巡回 (preorder tree walk) と中間順巡回 (inorder tree walk) を行って得られる節点の列が与えられるので、その二分木の後行順巡回 (postorder tree walk) で得られる節点の列を出力するプログラムを作成してください。

### 入力
1行目に二分木の節点の数nが与えられます。
2行目に先行順巡回で得られる節点の番号の列が空白区切りで与えられます。
3行目に中間順

元記事を表示

DearPyGuiのプロットにテーマを設定する

# やりたいこと
DearPyGUiでプロットを作成したときにPaddingを設定したかった
(左が未設定、右が設定済み)
padding.png

どうやるんだろうと探していたらドキュメントのテーマの項に記載がありました。
Padding以外の設定もできるようになったので記載します。

https://dearpygui.readthedocs.io/en/latest/documentation/themes.html#

# 環境
Mac OS
Python 3.10.1

dearpygui 1.3.1
numpy 1.22.1

`pip install dearpygui numpy`

# 詳細
手順は2つだけでした

1. テーマを作成
1. 表示するプロットにテーマを紐付ける

“`python

元記事を表示

mayaの環境設定 ~subdivisionMethod~

mayaのいつからか忘れましたが、smoothのsubdivisionMethodが導入され
これもまた環境によって変わってしまう面倒なやつ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/10e045a6-a1eb-0e9d-cbf0-5a52c42aaec5.png)

環境ごとに違うと何が問題か?

meshノードのsmoothMesh項目にsubdivisionMethod というのがあり、
useGlobal = True がデフォルトになっている。
useGlobal つまり環境設定に準ずるということ。
これが揃っていないとsmoothMesh使用時にメッシュの形状・UVなどに差異が生まれてきてしまう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/78529c4e-2eed-284f-8a94-0a536d83ca91.png)

どこで設定

元記事を表示

NameError: name ‘os’ is not definedが表示される場合の2つの解決法

#はじめに
僕はこのエラーに2回遭遇した経験があります。
1回目は、はじめてのDjango使用時にstartappしようとしたとき
2回目は、画像アップロード機能を追加するためsettings.pyにMEDIA_ROOTに以下の記述を追加し、migtateを実行したときです。

“` python:settings.py
MEDIA_URL = ‘/media/’
MEDIA_ROOT = os.path.join(BASE_DIR, ‘media’)
“`
両者とも同じ方法で解決することができました。
しかし2回目解決の際、1回目の解決法を思い出すことが出来ず調べていて、別の方法を発見しましたので、備忘録としてまとめます。
(思い出せなかった件がアカウント作成のきっかけでもあります。アウトプット、メモ書き大事)

#解決方法

1. settings.py内に **import os** を記述する
2. os.pathを利用せず、**BASE_DIR/ ‘ ‘** という**pathlib形式**で記入する

#詳細

1. の方法に関してはsettings.pyの最初の行に

元記事を表示

【FastAPI】親子関係を持つテーブルのデータを同時に作成する

## やりたいこと

いわゆる1:Nの関係にあるデータ(売上・売上明細など)をFastAPI経由で作成する必要があり、その方法をメモします。

製品コードなどの画面入力項目を主キーにしている場合は特に問題がないのですが、
連番やuuidなどを主キーにしている場合、事前(リクエスト前)にキー項目の値を把握することができず、データ作成時に“`AttributeError: ‘dict’ object has no attribute ‘_sa_instance_state’“`というような例外が発生してしまいます。

## 実現方法の概要

* crud処理の中で、pydanticスキーマのdictをアンパック(“`**schema_create.dict()“`)せず、key=valueを直接指定する
* sqlalchemy.orm.Session.flushを利用して親の主キーを取得し、子データを作成

※FastAPIの勉強を始めたばかりですので、もっと良いやり方がある場合はご教示いただけると大変嬉しいです:bow_tone1:

## 詳細:ソースコード

* SQLA

元記事を表示

scikit-learnのロジスティック回帰の正則化項ハマった話

 完全に2値分類できる問題があったとする。scikit-learn のロジスティック回帰を使って分類する場合、scikit-learn のロジスティック回帰では**デフォルトでL2ノルム**が加えられている。この正則化項により、うまく分類できない場合がある。
#解決策
 そういうときは以下のように“`penalty=none“`を追加して試してみるとうまくいくかも。
“`lr = LogisticRegression(penalty = “none”)“`

 完全分類できる問題でなければL2やL1の罰則項を加えておいたほうがいいと思う。

# 参考
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

元記事を表示

[python]オブジェクト指向で記述するgithubのURLのあれこれを取得

訳あってpythonを個人的に書いているのだが、最近の意識として、クソコードならクソコードらしく、ちゃんとオブジェクト指向で書いてみようじゃんかよ!ということで改めて書き直してみた。
ただ、この書き方が正しいのかどうかは分からん。

やっていることとしては、アカウント名とリポジトリ名を取得する事。
リポジトリ名については.gitが含まれる場合があるので、それについての判定も書いてみた。

“`py:main.py
from array import array

url = “https://github.com/TatsuyaMaeta/tama-camp-univ-janken.git”

class SplitUrl:
def __init__(self,url):
self.url = url
# self.lastArrIndex = len(self.url.split(self))-1
self.slsh = “/”
self.dot = “.”
self.repositoryNa

元記事を表示

文字列をwindowsでフォルダ名に使える文字列に変換するPythonプログラム

#はじめに
Pythonでどこかからとってきた文字列で自動的にフォルダを作成していると、winwowsで使用できないフォルダ名になってしまって、消すのがとても大変になることがあります。
そこでwindowsのディレクトリ名に使えるように名前を変更するプログラムを紹介します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/993303/80066901-6dc3-ed55-e0c5-9cde9601fc4f.png)

#変更する文字

###半角文字
まず、windowsのフォルダで使用できない文字があります。それが以下の文字です。
`\ / : * ? ” < > |`
そのため、以下の全角文字に変更します。
`¥ / : * ? ” < > |`

https://www.itc.u-toyama.ac.jp/el/win7/restricted.html

###エスケープシーケンス
上の使用できない半角文字の中に`\`がありましたが、これだけを置き換えると、エスケープシーケンス

元記事を表示

特定バージョンのtensorflowのインストールができないときの対処法

# はじめに
tensorflowで作成した深層学習モデルを学習させるときに,以下のようなエラーで学習ができず新たな仮想環境の構築を行なったのでまとめます.

“`
Conv2DCustomBackpropInputOp only supports NHWC.
“`

このエラーはおそらく**CPU環境においてtensorflow2系でモデルの定義で data_format = “channels_first” [^1]とする**と発生するもので,このエラーへの対処法は以下の二通りが考えられます.

1. データ形状とモデルのdata_formatを全てchannels_lastにする
1. tensorflowをダウングレードする

ここでは二つ目のtensorflowをダウングレードする方法について紹介します.
今回は**WindowsのPython3の環境でtensorflowのバージョン1.8.0へのダウングレード**を行います.
MacやLinuxでも似た流れで実行できると思います.

[^1]: channels_firstとは,tensorflowでのデータの形状を表

元記事を表示

【Django】同名でsquashmigrationsしたらshowmigrationsから消えてしまったとき

## 環境
“`
$ python -V
Python 3.9.1
$ python -m django –version
3.1.5
“`

## 起こった問題
こういうマイグレーションがあるとします。

“`bash
$ python manage.py showmigrations
user
[X] 0001_initial
[X] 0002_user_name
[X] 0003_auto_20220214_1200
“`

`squashmigrations`を使って0002と0003をまとめます。
このとき、`–squashedname`オプションでまとめた後のファイル名を指定します。

“`bash
$ python manage.py squashmigrations user 0002 0003 –squashedname user_name
Will squash the following migrations:
– 0002_user_name
– 0003_auto_20220

元記事を表示

「新・明解Pythonで学ぶアルゴリズムとデータ構造」で勉強日記#5~8(第2章まとめ)

2章まとめ
【出典】[「新・明解Pythonで学ぶアルゴリズムとデータ構造」](https://www.amazon.co.jp/%E6%96%B0%E3%83%BB%E6%98%8E%E8%A7%A3Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0-%E6%96%B0%E3%83%BB%E6%98%8E%E8%A7%A3%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E6%9F%B4%E7%94%B0%E6%9C%9B%E6%B4%8B/dp/4815603197/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1BG3JS7CKMZA0&keywords=Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%82%A2%E3%

元記事を表示

「新・明解Pythonで学ぶアルゴリズムとデータ構造」で勉強日記#8

【出典】[「新・明解Pythonで学ぶアルゴリズムとデータ構造」](https://www.amazon.co.jp/%E6%96%B0%E3%83%BB%E6%98%8E%E8%A7%A3Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0-%E6%96%B0%E3%83%BB%E6%98%8E%E8%A7%A3%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E6%9F%B4%E7%94%B0%E6%9C%9B%E6%B4%8B/dp/4815603197/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1BG3JS7CKMZA0&keywords=Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%82%A2%E3%83%AB%

元記事を表示

Python による画像生成で Mac のクソダサデスクトップにさよなら

### 前置き

Mac使いの方。
マルチデスクトップを駆使していろんな作業を同時並行で進めていると、苦労することがありませんか……?

* どのデスクトップでどの作業をしているのか分からなくなる。
* 付箋アプリで作業内容を貼っておくのも鬱陶しい。
* かっこいいMacの壁紙の情報量が逆に邪魔。
* どんな壁紙を使っていてもそのうち飽きてくる。

ここで欲しくなってくるのは、
「任意のテキストが入れられた壁紙をさくっと作る」
プログラムです。そうですね。

というわけで作りました。

### 要するに、何がやりたいの?

![Screen Shot 2022-02-15 at 4.24.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/351420/fef7f9f8-85f8-ad61-3cae-739873a24002.png)
![Screen Shot 2022-02-15 at 4.24.24.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

【Project Euler】Problem 87: 素数のべき乗の和

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

### 問題 87. 素数のべき乗の和

原文 [Problem 87: Prime power triples](https://projecteuler.net/problem=87)

**問題の要約:素数の2乗・3乗・4乗の和で表せる数が$5*10^7$未満でいくつあるか求めよ**

50未満では以下の4個だけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1922159/c97cca7f-d007-4457-50c9-62238a1d98b8.png)

単純に全探索します。同じような処理が繰り返されるので再帰関数で実装しました。重複を除くためにセットを使っています。

“`python
import sym

元記事を表示

M1Mac + Pyenv + Pyenv-Virtualenvでの’pyenv install’時エラー

# 前提
– Mac M1Max
– Pyenv + Virtualenvを利用していて、ある日pyenv installができなくなった

# エラー内容
pyenvで新しいPythonをインストールしようとすると、下記のようなエラーが出る。
アーキテクチャ絡み?M1のせい?

“`bash
$ pyenv install 3.7.12

Last 10 log lines:
“_libintl_textdomain”, referenced from:
_PyIntl_textdomain in libpython3.7m.a(_localemodule.o)
_PyIntl_textdomain in libpython3.7m.a(_localemodule.o)
ld: symbol(s) not found for architecture x86_64
ld: symbol(s) not found for architecture x86_64
clang: clangerror: : linker command failed with

元記事を表示

OTHERカテゴリの最新記事