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

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

Pythonのスクリプトで見開きのPDFを半分に切る

# 背景
最近知ったのですが,中学受験にはA3対応のプリンタ/スキャナは必須だと言われているらしいです.確かにプリンタ,スキャナの使用頻度は高く,特にスキャンは面倒なのでA3/B4でできるといいなと思い,Amazonで人気のBrother MFC-6583CDWを購入しました.(品薄で,ポチってから届くまで約一ヶ月かかりました.)

今までA4とかB5の単位でスキャンしていたのが,A3とかB4の見開きでスキャンできて一見楽になったように思えましたが,印刷などを考えると見開きで1ページなのはあまり嬉しくないのでできれば見開きのページを半分に切って保存したいと思いました.

そこで,やりかたをいろいろ調べてみたのですが,意外と面倒くさそうということが分かりました.普段使っているMacだけでなくWindowsも含めてやり方のバリエーションとして調べてみたところ以下の通りいくつか見つかりましたが決め手に欠く状況でした.
– Adobe Acrobat DCを使う(mac,win) →有料
– Adobe Acrobat Reader DC + VipRiser(mac) →ファイルサイズが大き

元記事を表示

Pythonのデコレーターで引数情報や型情報を保持する方法

Pythonでデコレーターを使う際に引数情報やdocstring情報などがエディタやLint上で失われないようにするための小ネタです。

# 何が問題なのか

たとえば以下のような関数があったとします。

“`py
def sample_func(a: int, b: str = ”) -> int:
“””
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore.

Parameters
———-
a : int
Et dolore magna aliqua.
b : str, optional
Ut enim ad minim veniam, quis nostrud exercitation ullamco
laboris

Returns
——-
c : int
Nisi

元記事を表示

Pythonで標準入出力

覚書です。

# 入力
## 1行にひとつ

“`python
# 文字列
s = input()

# 整数
n = int(input())
“`

## 1行に複数(空白区切り)

“`python
# 文字列
str_list = input().split() # 配列
s1, s2, s3 = input().split() # 分解

# 数列
num_list = list(map(int, input().split())) # 配列
n1, n2, n3 = map(int, input().split()) # 分解
“`
## 複数行にひとつ

“`python
cnt = 3 #取得する要素数。今回は3つとする

# 文字列
str_list = [input() for _ in range(cnt)]

# 数列
num_list = [int(input()) for _ in range(cnt)]
“`

## 複数行に複数
“`python
cnt = 3 #取得する行数。今回は3つとする

元記事を表示

Pythonでエクセルに二次元配列を書き込む

Pythonを使って99×99の掛け算をエクセルに書き込んでみる
今回は2パターン示す

# 環境
– OS
– Windows10
– Python
– Python3.9.6
– Excel
– Microsoft 365

# 準備
今回はwin32comでエクセルに対して操作を行うため、pywin32のインストールを行う
#### pipのアップグレード
“`
pip install –upgrade pip
“`

#### pywin32のインストール
“`
pip install pywin32
“`

# 実装
99×99の二次元配列を用意する
sample.xlsxを開いて、Sheet1を取得する
“`py
from pathlib import Path
import win32com.client

# 99×99の二次元配列
twoDArray = [[i * j for i in range(1, 100)] for j in range(1, 100)]

# エクセルを開く
app = win32com.client.D

元記事を表示

古いlasデータをLAStoolsで最新版にアップグレードして、さらにLAZに圧縮にしてファイルサイズを1/4以下にする

## LASデータのバージョンって?

以下の記事で紹介したLASデータですが、記載の通りバージョン1.0~1.4まであり、v1.4が最新版になります。

– [iPhoneでも使えるようになったLiDARの標準ファイル形式「LAS」ってどんなデータなの?を、PDAL/Laspyを使って調べてみる。](https://qiita.com/nokonoko_1203/items/8b8568545148acfe11d3)

v1.4が策定されたのは2013年のはずなので、もう10年ほど経っていますが、日本でオープンに公開されているデータを見ると、v1.2やv1.3もまだ多く残っています。

基本的にはv1.4と比較して、ヘッダーや属性などに持てる情報少なくなってしまうため、あまりメリットはありません。

今回は以下で紹介した`LAStools`の中から、無償で利用できる`las2las`を利用して、v1.2のデータをv1.4に昇格させて、さらにLAZに圧縮し、データサイズを30パーセント程度まで高圧縮していきましょう!

– [LASデータ操作のスイスアーミーナイフ「LAStools」を

元記事を表示

LINE WORKS API 1.0 から 2.0 へのアップグレード

# はじめに
LINE WORKS様より
「LINE WORKS API 2.0」が2022年4月01日に公開されました!!(遅

「LINE WORKS」のAPI2.0を提供開始

それに伴い
「LINE WORKS API 1.0」は2023年4月30日に提供終了されることに…

https://developers.worksmobile.com/jp/document/10016001?lang=ja

「LINE WORKS API 1.0」で稼動中のBOTやシステムが多々あるので
「LINE WORKS API 2.0」へのアップグレード対応を行う必要がある!

ということで、アップグレード対応を行う際に役に立った記事や
引っ掛かった点をまとめさせていただきます。

※基本的にPythonで実装行っている為、他言語のコードや参考記事は記載しておりません。

# 最初に必ず確認しておくべき記事

## LINE WORKS公式 API 2.0とAPI 1.0の違い
https://developers.worksmobile.com

元記事を表示

Seleniumでのスクレピングにて非同期で受信される要素のテキストを取得する

# 問題点
Webサイトで要素の中身が元々空であり、非同期であとから中身が表示されるものがある。
これにより、待機時間が短いと空を取得してしまう。

# 実行環境
M1 Macbook Air
macOS Monterey 12.4
Python 3.10

# 解決方法
## 取得したいテキストが分かっている場合
**そのテキストが表示されるまで待機する**
“`Python
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
options.add_argument(‘–headless’)
driver = webdriver.Chrome(options=option

元記事を表示

MacでDocker Desktopを使う際にパフォーマンスを簡単に上げる方法やDocker Desktopを使わない方法を探してみた

### 環境
– macOS Monterey
– Intel Mac
### 要件
– [Homebrew](https://brew.sh/index_ja)インストール済み(後半のDocker Desktopを使わない方法を試す場合)
– Pythonのプログラムが実行可能(ベンチマークを動かしたい場合のみ)

## はじめに
MacでDockerを使う時にまず考えられる方法として、Docker Desktopがありますよね。
https://www.docker.com/products/docker-desktop/

インストールして起動するだけでいいので、簡単に環境構築できます。
(Docker Desktopのインストールについては他のところを見てください。)

「じゃあDocker Desktop使えばいいじゃん」となりますが、Docker Desktopには以下の問題があります。
– 商用利用が有料になった
2021年に有料化され、月5ドル払う必要が出てきました。ただし、個人利用もしくはスモールビジネス(従業員数250人未満かつ年間売上高1000万ドル未満)

元記事を表示

Twitter API で特定のユーザーのツイートを取得する(Python, tweepy)

# 概要
tweepyというPythonのライブラリを用いて特定のユーザーのツイートを取得する。

# 目次
– tweepy インストール
– Client クラスの作成
– ユーザーid の取得方法
– ユーザーのツイートの取得

## tweepy インストール
ターミナルで以下のコマンドを実行(anaconda)
“`
pip install tweepy
“`

## Client クラスの作成
tweepyをインポートして、自身の“`API_key“`などを入れる。
“`Client“`クラスのデフォルトの“`return_type“`は“`Response“`となっているので、必要に応じて、変更できる。詳しくは[公式ドキュメント](https://docs.tweepy.org/en/stable/client.html)

“`
import tweepy

API_key = “API_keyを入れてね”
API_key_Secret = “API key Secretを入れてね”
Access_Token = “Access Tokenを入れて

元記事を表示

Pythonのインストール[2022/06/28版]

# Pyhonのインストール方法

私自身の備忘録のためにPythonのインストール方法を記載していきます。(2022/06/28 現在3.10.5)

## python公式サイトからダウンロード
– [Python公式サイト](https://www.python.org/downloads/)から`[Download Python x.xx.x]`を選択する。

https://www.python.org/downloads/

– ダウンロードした`python-x.xx.x-amd64.exe`を実行する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2726394/ee156183-fccc-d4ac-483b-460efaf52ed8.png)
上記画像のInstall Nowに該当するボタンを押す。
(もし、Pathを通す必要がある場合は[Add Python 3.10 to PATH]にチェックを入れておく。)

– 完了したらCloseを押す。

以上でインストー

元記事を表示

M1 Mac の Jupyter 上で PixelLib を動かしたい!

## モチベーション

1. 画像のセグメンテーションをしてみたかった
2. カメラ画像がリアルタイム処理される様子をJupyter上で確認してみたかった

## 環境
– Mac mini (M1, 2020)
– macOS Monterey
– python 3.9.1 (mambaforge)
– [PixelLib](https://github.com/ayoolaolafenwa/PixelLib)
– jupyter

## 環境構築

conda を用いて環境を構築し、jupyter も共にインストールを行った。

“`shell:command
conda create -n qiita39 python=3.9.1 jupyter
conda activate qiita39
“`

[PixelLib README](https://github.com/ayoolaolafenwa/PixelLib#install-pixellib-and-its-dependencies)を参考にインストール。

“`shel

元記事を表示

ヅカの芸名を自動生成するAIを作る(1):データ収集編

# やりたいこと

筆者は、現在機械学習の独学中で、以下の書籍を参考にしています。

* [TensorFlow&Kerasプログラミング実装ハンドブック](https://www.amazon.co.jp/TensorFlow-Keras%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%AE%9F%E8%A3%85%E3%83%8F%E3%83%B3%E3%83%89%E3%83%96%E3%83%83%E3%82%AF-%E3%83%81%E3%83%BC%E3%83%A0%E3%83%BB%E3%82%AB%E3%83%AB%E3%83%9D/dp/4798055417)
* [生成 Deep Learning ―絵を描き、物語や音楽を作り、ゲームをプレイする](https://www.amazon.co.jp/Deep-Learning-%E2%80%95%E7%B5%B5%E3%82%92%E6%8F%8F%E3%81%8D%E3%80%81%E7%89%A9%E8%AA%9E%E3%82%8

元記事を表示

Pandasをマスターしたい.2

### 前回の記事
https://qiita.com/Hayaa6211/items/abbacfe935c9bd1fc78e

### 基本統計量の確認
– 各列の基本統計量を計算したい
“`python
df.describe()
“`

||||
|:-:|:-:|:–|
|count |標本数      |行数 |                             |
|mean |平均値 |算術平均 |
|std |標準偏差 |データのばらつき |
|min |最小値 |最も小さい値 |
|25% |第1四分位数 |データを降順に並び替えたとき、後半から4分の1番目に

元記事を表示

【Seaborn】手軽に美しい色々なグラフを描画する方法

##  【はじめに】

Seabornとは、Pythonの可視化ライブラリの一つです。 Matplotlibの機能をより美しく、より簡単に実現するための可視化ライブラリとして人気です。

今回は、Seabornでさまざまなグラフを描画する方法を紹介していきます。

### 本記事の内容

– MatplotlibとSeabornをインポート
– 使用するデータを読み込む
– 箱ひげ図を作成する | boxplot
– ヒストグラムを作成する | distplot
– 散布図を作成する | scatterplot
– 散布図行列を作成する | pairplot
– ヒートマップを作成する | headmap

## 【MatplotlibとSeabornをインポート】

matplotlibの中のpyplotを読み込みます。

また、Jupyter Notebook内にグラフを出力させるために`%matplotlib inline`を記述します。

日本語に対応できるように`japanize_matplotlib`も読み込みます。

続いてSeabornをインポートします。

“`P

元記事を表示

Pandas.DataFrameとNumPy.ndarray間の変換

# はじめに
データ処理の際まずは“`Pandas.DataFrame“`としてcsvやHTMLを読み、“`NumPy.ndarray“`で数値計算という流れが多い(気がする。)
Pandas.DataFrameで読んだもののNumPy.ndarrayに変換できない、、、などかなり苦戦したので、二者間のやり取りの覚書を置いておきます。
“`python:
import pandas as pd
import numpy as np
“`
# 結論
:::note info
Pandas.DataFrame(“`df“`) ↔ Numpy.ndarray(“`arr“`)の相互変換

Pandas.DataFrame → NumPy.ndarrayは“`arr = df.values“`
NumPy.ndarray → Pandas.DataFrameは“`df = pd.DataFrame(arr)“`
:::

# 注意点

:::note warn
Pandas.DataFrameからNumPy.ndarrayに変換するとラベル情報がなくなります。
Nu

元記事を表示

DataFrameの列(行)番号を指定してラベルを変更 Pandas.DataFrame

# はじめに
pandas.DataFrameのカラム名やインデックス名を変えたいけど“`pd.rename()“`をつかうには“`df.rename(columns={‘before’: ‘after’}, index={‘before’: ‘after’})“`のように「これまでの名前」と「これからの名前」が必要になるのが面倒。

そこで列番号(行番号)を指定して名前を変更する関数を定義してみる。

“`pandas“`のインポート
“`python:
import pandas as pd
“`

# 関数の定義

“`python:
def rename_iaxis(dataframe, axis, n, name):
# axis = 0ならインデックス、axis = 1ならカラムの名前をリスト化する
if axis == 0:
org_namelist = list(dataframe.index)
elif axis == 1:
org_namelist = list(dataframe.colum

元記事を表示

乱数の固定方法(random/numpy/tensorflow/gym)

強化学習をしていると乱数の固定が出来ているようないないような…
挙動が分かりづらかったので検証してみました。

# TL;DR

“` python
seed = 0

# random
import random
random.seed(seed)

# numpy
import numpy as np
np.random.seed(seed)

# tensorflow
import tensorflow as tf
tf.random.set_seed(seed)

# gym
import gym
env = gym.make(“Pendulum-v1”)
env.action_space.seed(seed)
env.observation_space.seed(seed)
env.reset(seed=seed)
“`

# random

それぞれ2回実施し、同じ値になるか見てみます。

“` python
def std_random():
import random

random.seed(0)
print(random.ra

元記事を表示

Zemax(Optics Studio) を Python で制御するメモ(途中)

## 背景

Zemax(Optics Studio)を Python で制御したい…

C++ API もありますが, そこまで C++ を駆使するほどでもないので Python でぱぱっとやりたい

## 仕組み

Python 直接ではなく, .NET 経由で呼んでいるようです.

スタンドアローン(dll 直接叩いて処理. Optics Studio 起動しなくとも動く),
Optics Studio の画面に結果を出すなどのインタラクティブモードの2つのモードがあります.

https://support.zemax.com/hc/en-us/articles/1500005489681-Connect-to-OpticStudio-from-Python-with-the-ZOS-API-Interactive-Extension

ここではスタンドアローンでやります.

Python であれば Matplotlib などでプロットしたりもできますしね.

## Python 3.8?

現時点(2022/05/10)の最新 22.1.2 では, Python 3.8

元記事を表示

zappaでFlaskアプリをデプロイできなくなった

# 急にデプロイできなくなった

`zappa deploy`済みのアプリに対して`zappa update`できていたはずが、急に update できなくなった。

CloudWatchのログをみるとcryptographyがちゃんと入っていないことが原因のようだが、ちゃんと入っているはず(と思ってた)

“`
[ERROR] ModuleNotFoundError: No module named ‘cryptography’
Traceback (most recent call last):
File “/var/task/handler.py”, line 655, in lambda_handler
return LambdaHandler.lambda_handler(event, context)
File “/var/task/handler.py”, line 249, in lambda_handler
handler = global_handler or cls()
File “/var/task/handler.py”, li

元記事を表示

天文データ解析入門 その24 (FilFinder (fil_finder) の使い方)

本記事では、[FilFinder](https://fil-finder.readthedocs.io/en/latest/index.html) の使い方について記述します。

# 準備
今回は、比較の例としてHerschelのアーカイブデータも用います。データは
http://herschel.esac.esa.int/Science_Archive.shtml
から、フィラメントが顕著な領域である Taurus の、
4:19:52.0 +27:12:30.0 (FK5)
あたりにします。
観測 ID は 1342202254 です。level2_5の、
hspireplw274_25pxmp_0421_p2748_1342190616_1342202090_1462391077877.fits
を使用します。

まず、FilFinder の install ですが、python のカーネルが 2.7 や 3.7 等以外だと失敗します。少なくとも 3.6 では失敗しました。カーネルの追加方法ですが、各々の環境によります。例えば pyenv を使用している方は、3.7.4 などを

元記事を表示

OTHERカテゴリの最新記事