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

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

numpyでargsortの逆操作を行う配列を (sort1回のみで) 簡潔に得る

表題のとおりです.

以下のように行うとsortは一回で済み,for文を使う必要もないです.

“`python
import numpy as np

# 配列を定義
size = 1 << 20 x = np.random.random(size) # sortを行う order = np.argsort(x) # 逆操作を得る (以下2行) order_inv = np.zeros_like(order) order_inv[order] = np.arange(size) # 検証 np.allclose(x, x[order][order_inv]) >>> True
“`

元記事を表示

Python3 模擬試験のミス問題を調べて理解を深める3

### 初めに
現在Pythonの試験勉強を始めて1か月ほど。
残り2週間ほどで試験を受けるつもりなので、模擬試験をこなしてミス問題を復習し、理解を深めていけるようにしたい。
※自分用なのですべての解説を網羅させるつもりではないです。
模擬試験の結果を赤裸々に載せていくので、どんな問題を間違えているのか気になる方は見てもらえればと思います(笑)

模擬試験は無料のPRIME STUDYというサイトで行っています。
模擬試験の結果がメールで届き、正誤を教えてくれるので理解ができていない部分に関してフォローできるので便利だと思いました。

https://study.prime-strategy.co.jp

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1744893/9433900e-f01d-b745-413b-569079c837fc.png)

前々回の第一回試験の結果(初見)

>受験日2022/9/1
第1回 Python 3 基礎 模擬試験 を受験いただきありがとうございまし

元記事を表示

numpyで第一要素でSortし,同一値の場合は第二要素でSortする方法

`np.lexsort` によってargsortができるようです.
ただし,一番最初にSortをするKeyが引数の最後に来ることに注意が必要です.

“`python
import numpy as np

a = np.array([
[2, 1, 2, 3, 1, 4, 3],
[4, 1, 3, 2, 3, 3, 5],
]).T

order = np.lexsort((a[:, 1], a[:, 0]))

>>> a[order]
array([[1, 1],
[1, 3],
[2, 3],
[2, 4],
[3, 2],
[3, 5],
[4, 3]])
“`

元記事を表示

CヘッダからPython向けバインディングを自動生成してDLLから関数を呼び出す方法

# この記事は?
C向けSDKが手元にあるけど柔軟にインタプリタ型言語のPythonでチクチク触りたい人向に刺さると思われる記事
いいねしていただけるとモチベが上がります。

## 時間がない人向け
ctypeslib2をインストールすると付属するclang2pyを使用すると簡単にできる
1. `pip install ctypeslib2`
2. `clang2py header.h -o out.py`
3. (Windowsのみ)生成されたコードを編集し、DLLとリンク

## 確認のためCソースから自作してPythonから呼んでみる
XとYの値を持つ`POINT`型を含んだヘッダファイルを作る。
C言語側のお仕事は`print_position()`で`POINT`の属性を出力すること。
DLL化するために`__declspec(dllexport)`を使用する。

“`c:point.h
#ifndef POINT_H
#define POINT_H

typedef struct Point {
int x;
int y;
} Point;

__dec

元記事を表示

Webdriver managerを使用していても、Google Chrome のバージョンをサポートしていないとメッセージが出た場合の対処方法

## ■記録した理由
>通常Google Chrome のバージョンはChromeDriverManager(「from webdriver_manager.chrome import ChromeDriverManager 」)をインポートしていれば自動で修正されるが、下記のような表示がTerminal上に出て、たまに修正されない場合がある。
>その場合は、手動で直す必要があるので記録した。

![スクリーンショット 2022-09-10 8.32.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634708/ff245f52-29d7-15c6-afe2-63cecdc2ef44.png)
## ■対処方法
>①まず、chromedriverのホームページを開く
urlはここ https://pypi.org/project/chromedriver-binary/#history

https://pypi.org/project/chrome

元記事を表示

D社のコーディングテストを私の勝手に解いてみました!

おはようございます!:sunrise_over_mountains:
私が住んでいるところは12日まで休みですが、13日にD社のコーディングテストがあるので…。
うーん…。無理矢理パソコンの前に座りました。:disappointed_relieved:
D社もコーディングテストの模試を公開しているので、そのうちの一つを解いてみたいと思います。

# 問題

正方形の大きさの格子状の庭に、咲いた花または咲いていない花を植えました。
この庭の花が全部咲くのに何日かかるのか知りたいです。ある日に咲いた花の前後左右の4方向にある花は、次の日に花を咲かせます。

現在の庭園の状態を盛り込んだ2次元リスト`garden`が与えられた時、すべての花が咲くのに何日かかるのか`return`するように`solution`関数を作成してください。

# 説明

現在の庭園の状態を盛り込んだ2次元リスト`garden`が`solution`関数のParameterとして与えられます。

– 庭園の一辺の長さは2以上100以下です。
– 庭園の状態を盛り込んだ2次元リスト`garden`の元素は`0`または

元記事を表示

functools.lru_cacheに有効期限があると便利だよね。

個人的な備忘録メモです。

プロジェクト内で、DBで取得したデータってメモリないにキャッシュしておきたいなと思うことありませんか?
でも、DBの記録されているデータって常時変わる可能性があるし、いちいちサービスを止めれない。
じゃ、redisか、いやlru_cacheをうまく活用できないかと上司との擦った揉んだ(私は聞いていた)の上、
以下のページでどうやらできるらしい。

https://www.rhoboro.com/2021/06/01/lru_cache-with-ttl.html

https://stackoverflow.com/questions/31771286/python-in-memory-cache-with-time-to-live

一番参考になったのは、ほぼろさんの記事ですね。ほぼろさんの記事ではstackoverflowの内容を保管してくれていてすごく勉強になりました。

それらを踏まえて完成したのは以下のコード

“`python
import functools
from datetime import datetime, timedelta

元記事を表示

Macにpyenv/Python3/pipのインストール

# はじめに
python3と関連モジュールをインストールするためのメモです。
まずタイトルのpyenv/Python3/pipを説明します。

## pyenvとは
Pythonのバージョンを管理するモジュールです。
これを使ってpythonをインストールします。

## pythonとは
Pythonはプログラミング言語の一つです。
機械学習や人工知能などのライブラリも豊富です。

## pipとは
Pythonのパッケージを管理するモジュールです。
Pythonと一緒によくインストールされます。

# 実行環境
macOS Monterey 12.3
Homebrew 3.5.10

# pyenvのインストール
まずはpyenvがインストールされているかの確認
“`
$ pyenv -v
zsh: command not found: pyenv
“`

ないのでbrewコマンドでインストール
brewコマンドのインストールは[こちら](https://qiita.com/ukei2021/items/51cdc9fbd53428708fea)
“`
$ brew ins

元記事を表示

py-cordのUI KITを使ってボタンやドロップダウンメニューを実装する方法

# はじめに
この記事ではPythonのDiscordでBOTを作成する為のライブラリの`py-cord`を利用したUIの作成について説明させていただいています。

## 前提知識
主に`py-cord`でコマンドを実装したことがある方であればおおよそわかる内容かと思います。
もし、一度も実装した事がない場合は[こちらの記事](https://qiita.com/nikawamikan/items/1c253ce9b05d7edf1dd0)などを参考にして基本的なコマンドを実装してみてください。
python自体のクラス継承なども登場しますが、ある程度解説するので必須ではありません。

## 環境
– python 3.10.6
– py-cord 2.1.3

# もっとも簡単な方法

`py-cord`では簡潔な記述でボタンを実装するデコレータが用意されているため、最も簡単な実装では以下のようにボタンを実装することができます。

この情報はほとんど[Pycord公式のガイド](https://guide.pycord.dev/)となりますので、そちらで参考してもいいと思います。

元記事を表示

【CentOS 7 / pyenv】サーバー環境のPythonバージョンアップデート

# はじめに
サーバー環境のPythonのバージョンをアップデートする時の流れをまとめました。
初心者向けにはなりますが、つまづいたところも書き留めているので、同じところで悩んでる方の助けになれば幸いです。

# 環境
* CentOS 7
* pyenv

# Pythonのバージョン変更の流れ
[1. 現在のPythonバージョンを確認](#1-現在のpythonバージョンを確認)
[2. pyenvでインストール可能なPythonバージョンを確認](#2-pyenvでインストール可能なpythonバージョンを確認)
[3. バージョンを指定してpythonをインストール](#3-バージョンを指定してpythonをインストール)
[4. pyenv内のpythonのバージョン切り替え](#4-pyenv内のpythonのバージョン切り替え)
[5. 現在のpythonバージョンを確認](#5-現在のpythonバージョンを確認)

[つまずいたところの解決方法まとめ](#つまずいたところの解決方法まとめ)

## 1. 現在のPythonバージョンを確認
現在サーバーで参照されてい

元記事を表示

初心者のためのPython Tip #1-Input編

# はじめに

初めまして、Qiitaでの初投稿です。
Pythonプログラミングをしている皆さんもご存知の簡単なテクニックを記載します。
初心者向けの説明ですがたまに普通のエンジニアの方でも紛らわしい部分も探っていきます。
(日本人ではないので、日本語の間違いは指摘してください。)

## Input(入力)

入力はこれが基本ですよね。

“`Input.py
a = input() # Stringで入力
_list = input().split() # string type listで入力
a, b = input().split() # a, bで分けて入力
“`
**Q:** それならInt型で入力してもらうにはこうすれば良い?

“`Int_wrong.py
A, B = int(input().split())
“`
**A:**  **Int**型で入力を受けても、**list**型にすぐ変換できませんので、このコードは機能しません。
この時は**map**を使用します。**map**は基本的に適用する関数、使用できる資料のタイプを指定します。
“`

元記事を表示

【Flask】url_forを使用して画像ファイルを表示する方法

Flaskのurl_forを使用して画像を表示する方法を紹介します。

## ディレクトリ構成

今回例として使用するディレクトリ構成は以下のようになってます。

“`bash
flask$ tree .
.
├── __pycache__
│   └── func.cpython-310.pyc
├── main.py
├── static
│   ├── images
│   │   ├── default.png
│   │   ├── home.png
│   │   └── logo.png
│   ├── js
│   └── style
│   └── style.css
└── templates
├── index.html
└── layout.html

9 directories, 18 files
“`

static/images/default.pngファイルを表示するやり方を記載します。

## static配下を使用するためには

今回、cssファイルやjsファイル、imageファイルはstaticディレクトリ配下に入れてい

元記事を表示

django+nginx+uwsgiの環境構築

本稿はAWS EC2環境にて以下構成でdjango、nginx、uwsgiによる開発環境を構築する際の私的メモです。

## 構成

| 名称 | バージョン | 用途 | その他 |
| ———— | ———- | ———————————— | ————— |
| Amazon Linux | 2 | OS | |
| nginx | 1.20.0 | Webサーバ | |
| uwsgi | 2.0.20 | APサーバ | |
| pyenv

元記事を表示

カリー化とは

# 意味
– 関数を返す関数を作り、プログラムの共通化を図る。
– 言語に関係なく共通する概念であるが、ここではtypescriptで説明します。

# 例文
“`typescript:typescript
const add = (x:number) => (y:number) => x + y
const add1 = add(1)
const result = add1(2) // 3
“`

# 説明
関数addは引数xを受け取ると、`(y:number) => x + y`を返す関数。
add関数の引数として1を入れると、`(y:number) => 1 + y`の返すようになる。
返された関数の引数yに対して2を入れると、`(2) => 1 + 2`が成立され、3を返す。

# メリット
– 共通化によってバグを防ぐことができる。
– まとまった処理を分割することによって、複雑度を下げつことができる。

# 例文
“`typescript:typescript
const add = (x:number, y: number) => x + y
add(1, 2)

元記事を表示

pyplot

検索するのつかれたんで、自分で学んだものを整理しておきます。
【目次】
~matplotlibで軸が見切れるときの対処法~
◯Matplotlibでx軸のラベルが見切れるときの対処
◯Matplotlibでx軸見切れなくする
◯subplot間の間隔調整

◯Matplotlibでx軸のラベルが見切れるときの対処
引用:https://qiita.com/78910jqk/items/e8bce993081c384afdba

◯見切れなくする
グラフの描写範囲の設定を変えることでx軸のラベルを見切れないようにできる。
グラフの描写範囲の下端の設定は`matplotlib.pyolot.rcParams[‘figure.subplot.bottom’]`に格納されている。デフォルトだと0.11になっていて、下から11%の領域までグラフが書かれるため、x軸のラベルが入りきらない。これを15%(0.15)くらいに変更すればいい。
~~~python:qiita.rb
plt.rcParams[‘font.size’] = 13
#この2行を書いておく
###################

元記事を表示

scikit-learn データセット分割の覚え書き

# この記事の内容
scikit-learnに付属しているデータセット分割法の覚え書きです。

– ホールドアウト法
– K-分割交差検証(KFold)
– 層化K-分割交差検証(Stratified KFold)
– グループ付き交差検証(Group KFold)
– 時系列データ分割(Time Series Split)

# データセットのインポート
scikit learnのデータセットとして利用できるiris datasetを使用します。
“`python
import pandas as pd
from sklearn.datasets import load_iris

iris = load_iris()
df_iris = pd.DataFrame(data=iris.data,columns=iris.feature_names)

“`
# ホールドアウト法
単純にデータセットを訓練データとテストデータに分割します。(デフォルト=7:3)
“`python
from sklearn.model_selection import train_test_spli

元記事を表示

M1にpythonをインストールしてみた

## はじめに
今回の投稿がQiitaの初めてなので、markdown記法に慣れていないので申し訳ございません。
今後、勉強したことや困ったことを投稿していきますので、よろしくお願いします。

## pythonを入れる方法
今後、競技プログラミングの方でpythonを使って行なっていきたいと思ったのですが、先日いきなりpythonの方でやろうとしたら、M1にはpythonが元々入っていない?という状態に気づいて、急遽Javaの方でやりました。
そのため、今回の記事はM1にpython環境を入れるのに参考にした記事を貼っておこうと思います。
[参考記事](https://hitori-sekai.com/python/mac-python-install/)
※いつもの感覚でバージョンを確認するときに`python -v`と入力するとpythonが起動してしまいました。原因としては`-v`が大文字の`-V`でないといけないことを知りませんでした。

## 最後に
最近、macを買い替えてM1チップ搭載のMacBook Airにしたのですが、友人に聞いたところpython以外にもdock

元記事を表示

Pythonのフレームワーク「Flask」を用いてHelloWolrdしてみた

# 概要

pythonでのWebアプリ開発の経験がなかったため、勉強としてFlaskフレームワークを使用していろいろ作成を行ってみました。
この記事では、Hello Worldレベルの最低限の実装となっています。

# Flaskとは
[Flask Documentation](https://flask.palletsprojects.com/en/2.2.x/)
[Flask 日本語Documentation](https://msiz07-flask-docs-ja.readthedocs.io/ja/latest/)

Flaskは、Python製のマイクロWebフレームワークです。
__マイクロ=コアとなる機能を保ちつつ拡張性を持っている__ という解釈です。
拡張機能を多く持ち、必要に応じて追加することで自由度が高いです。
また、最低限の機能を使うための学習コストが低く、誰にでもすぐに利用することができます。

開発に必要な多くの機能が実装されているという点では、[Django](https://www.djangoproject.com/)の方がフルスタックフレームワー

元記事を表示

ダミー変数化について

# Pythonでのダミー変数化
ダミー変数化とは・・・
日付や時刻などの文字列(カテゴリ変数)を数値データに変換すること。
Pythonでは一般的にPandasの関数get_dummies()を用いてダミー変数化される。また、one-hot encodingとして出力される。
## one-hot encoding
文字列のカテゴリの変数に応じてカラムを用意し、0,1に置き換える。
ただし、欠点としてカテゴリの変数が多い場合はデータが膨大になってしまう。

## label encoding
カテゴリの変数の種類に応じず、1つの列で収まるデータを作成する。
使用するには、sklearnのLabelEncoder()を利用する。その後fitでデータを読み込み、transformで変換を実施する。

元記事を表示

pdb.set_trace()のかわりにVSCodeでアタッチしてデバッグしたい

# 目的

`import pdb; pdb.set_trace();`や`breakpoint()`はちょっとしたデバッグの時に便利だが、VSCodeでデバッグしたい時がある。

# 環境

Windows10、Python 3.10.4、VSCode 1.70.2(2022-08-16T05:35:13.448Z)

# 準備

`debugpy`があること。なければpipか何かで導入する。
“`
> pip list |findstr debugpy
debugpy 1.6.3
“`

`import pdb; pdb.set_trace();`の代わりになるものを書く。
ブレークさせたいところに`break_here()`と書く。

“`python:debug_util.py
import sys
import debugpy

def _wait_debugger():
port = 5678
debugpy.listen(port)
print(f”debugpy {port=}”, file=sys.stderr)

元記事を表示

OTHERカテゴリの最新記事