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

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

Anacondaの管理

**Anaconda Prompt** を使用した Windows10 における **Anaconda** の管理方法を紹介します。
紹介するコマンドは Ubuntu 環境でも有効です。
## 環境
##### Windows10 x64
##### Ubuntu
– Distributor ID: Ubuntu
– Description: Ubuntu 20.04.4 LTS
– Release: 20.04
– Codename: focal

# コマンド一覧
#### アップデート
|目的|コマンド|
|:—: |:—: |
|Anaconda本体|conda update -n base conda|
|Anacondaのすべてのパッケージ|conda update –all|
|Anacondaの特定のパッケージ|conda update パッケージ名|

#### 削除
|目的|コマンド|
|:—: |:—: |
|不要ファイル|conda clean –all|
|不要パッケージ|conda uninstall パッケージ名|

#### イ

元記事を表示

plotlyでリニア対数表示をドロップダウンで切り替えるhtmlを生成する最も簡単な例

# はじめに

plotly を用いて、簡単なhtmlを作成したいだけだが、リニアとログの切り替えまではボタンで簡単にできるようにしたい場合に、簡単な例が見つからなかったので紹介してみます。縦軸と横軸の log or linear に変換するためのドロップボックスのボタンを付けたシンプルなな例です。plotlyが動く環境であれば、下記のコードのコピペで動くはず。

## 概要

最低限の2つの関数を用意した。

– setdata(): 簡単なデータ(x,y)を作成し、それを用いて go.Scatter のリストを作成する。
– writehtml(): setdata()で作成した data を用いて、レイアウトと、dropdownボタンを設定し、html で書き出す。

データを生成し、plotlyのグラフのオブジェクトのリストを生成し、レイアウトやボタンの調整をして、html を書き出す、というだけの機能です。

## 実装例

“`python plotly_xydata.py:
#!/usr/bin/env python

import plotly.graph_obj

元記事を表示

銀河麻雀の待ちを調べるプログラムを作った

麻雀YouTuberの麻雀カッコイイシリーズが投稿していた「銀河麻雀」。

(ルール説明は13:40くらいから)
簡単に言えば、各種類の牌に1枚ずつ「ギャラクシー牌(銀河牌)」と呼ばれる牌種が自由になる牌が入った状態での麻雀だ。
例えば、銀河1mは1p,1sとしても扱える。
銀河東は東南西北、銀河白は發中としても扱える。

銀河牌がたくさん入ると、受け入れや待ちの数が通常よりも多くなる。
銀河牌が沢山入った順子が並べば、とても人間の頭では処理しきれない、まさに銀河が広がるよう

元記事を表示

[BINANCE] 過去の約定履歴やローソク足をダウンロード

## はじめに
以下のサイトを見つけて,いろいろダウンロードするコードを書いたので共有。飲酒コードなので悪しからず。futuresのumのdailyのBTCUSDTでしか動作確認してません。各自でなんとかしてください。

https://data.binance.vision/

## コード
メイン
“`python:main.py
from get_data.binance.download import Download

def main():
download = Download()
download.print_info()
# symbol = input(“symbol = “)
# params = {
# ‘base_dir’: “data/binance_f/”,
# ‘mode’: 0,
# ‘futures_mode’: 1,
# ‘period’: 0,
# ‘method’: 5,
# ‘symbol’: symbol,

元記事を表示

犬種ドラフト

“`python
%cd/content/drive/My Drive/dog_folder

from PIL import Image
import os, glob
import numpy as np
from PIL import ImageFile
# IOError: image file is truncated (0 bytes not processed)回避のため
ImageFile.LOAD_TRUNCATED_IMAGES = True

classes = [“ラブラドールレトリバー”, “ミニチュアダックスフンド”,”ゴールデンレトリバー”,”ダルメシアン”,
“コーギー”, “ポメラニアン” ]
num_classes = len(classes)
image_size = 64
num_testdata = 25

X_train = []
X_test = []
y_train = []
y_test = []

for index, classlabel in enumerate(classes):
photos_dir = “./

元記事を表示

pretty_midiのget_piano_rollを使ってみる

# はじめに
pythonでMIDIを扱うパッケージである,pretty_midiの中にピアノロールを取得できるメソッドがあるので使ってみます.

# pretty_midi.PrettyMIDI.get_piano_roll
example.midというファイルをピアノロール表示したい場合,
“`python:サンプルコード
midi = pretty_midi.PrettyMIDI(“example.mid”)
piano_roll = midi.get_piano_roll()
print(piano_roll)
“`
という感じで使えます.

[pretty_midiのドキュメント](https://craffel.github.io/pretty-midi/index.html?highlight=piano#pretty-midi-prettymidi)によると
get_piano_rollの引数には,
サンプリング周波数,時間,ペダルの閾値を設定できます.
## サンプリング周波数
これはpiano_rollの行(時間方向)の1秒間あたりの区切りの数を表しています.

元記事を表示

Matplotlibまとめ

# 基本のグラフ
単独の散布図と折れ線グラフの重ね合わせは下記のように書ける。
![single_graph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600092/098595a5-a74a-2005-2a48-4f9a3f3935ea.png)
“`python:single_graph.py
#パッケージのインポート
import pandas as pd
import matplotlib.pyplot as plt

#基本のグラフ
def draw_graph(df_scatter, df_plot):
#体裁の設定
plt.rcParams[‘font.family’] =’sans-serif’#使用するフォント
plt.rcParams[‘xtick.direction’] = ‘in’#x軸の目盛線が内向き(‘in’)か外向き(‘out’)か双方向か(‘inout’)
plt.rcParams[‘ytick.direction’] = ‘in’

元記事を表示

GoogleColaboratory上でMecab形態素解析

Python未経験でしたが、自然言語処理、形態素解析の話が業務で出たため会話できるよう**Mecab**での分かち書きをやってみました。
JupyterNotebookでも可能でしたが、GoogleColaboratoryでの話を備忘録兼初心者の経験として残します。
## GoogleColaboratoryとは
Googleが提供するサービスでGoogleアカウントさえあれば無料でPythonの実行がブラウザ上でできます。
Pythonってどうやって使うんだろう、環境設定で挫折しそう、そんな方でも手軽に試せます。
私のようなPythonに興味はあるけどあまり触れたことが無い人が初めて見るにはぴったりです。
プログラミングの学習は楽しさを見出さないと続かないもの、かくいう私も何度も学習を中断しています。
絶対続けるみたいな固い意志があればいいですが、少しの壁でも躓いちゃうと辞めちゃいます。
まず最初に簡単な環境で始めてみて面白さに気づけばよいと思います。

## テキストデータの分析
どの言語でも最初は’HelloWorld’ですよね。
でも画面に文字を出すだけでは何もおもしろくない

元記事を表示

【scrapy-selenium】spider作成〜メイン処理を書き始める前に先に修正した方が良いコード

作成したspiderのソースコードを書き始める前に、気をつけて置いた方が良いことの覚書。

例:Amazon(https://www.amazon.co.jp/ のスクレイピングをするとき)

### spider作成のコマンド
`scrapy genspider [-t crawl] www.amazon.co.jp/`
プロトコル名などの部分は要らないので、「https://」の部分は削除しておくこと。
crawlテンプレートを使う場合はオプション`-t crawl`をつけること。

### scrapy-seleniumを使う場合のmiddleware設定
[scrapy-seleniumの設定方法](https://github.com/clemfromspace/scrapy-selenium)の「READEME」の内容を参照

今回はchromeを使ったのでsettings.pyの最後に以下のように追記

“`
SELENIUM_DRIVER_NAME = ‘chrome’
SELENIUM_DRIVER_EXECUTABLE_PATH = which(‘chromed

元記事を表示

ThonnyではなくVSCodeで全部完結するようにした

[前回の記事](https://qiita.com/prln/items/2cee43a75c20ba493b4e)ではRasppberry Pi PicoでLチカしました.
その際にThonnyというIDEを使ってプログラミングをしたのですが,あれサジェスト機能とかないんですよね...

まあ使いにくかったです.

できれば普段使っているVSCodeを使ってサジェスト機能とか使いながら開発を進めていきたかったので,今回はそれができないか試してみました.

結論としてはできたので記事にしていきます.
やり方解説している記事はあったのですが,その方法では少なくとも私はできなかったので少し詳しく解説します.

## やり方
VSCodeの拡張機能Pico-Goというものを使います.
![767ffccfc150342aad7ea019089a0652.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/512282/4aecf7c8-a69a-de66-55f1-73461cf5af14.png)

こんなので

元記事を表示

Blenderで4次元データの可視化

## やること

4次元データのグラフをBlenderで作成してみましょう。
4軸目は、球のサイズにします。

## やってみる

データはダミーで作ります。

“`py
import bpy
import numpy as np

def draw(data, scale=0.02):
mn = data.min()
mx = data.max()
data[:, :3] = (data[:, :3] – mn) / (mx – mn) * 2
for x, y, z, s in data:
bpy.ops.mesh.primitive_ico_sphere_add(subdivisions=3, radius=s * scale, location=(x, y, z))
bpy.ops.object.select_all(action=’SELECT’)
bpy.ops.object.shade_smooth()
bpy.ops.mesh.primitive_cylinder_add(vertices=4,

元記事を表示

ローカル環境ブラウザからリモートサーバ上で立ち上げたJupyterを使用する

ここではリモートサーバ上(Cent OS)でJupyter NoteBookを立ち上げ、ローカル環境のWebブラウザからアクセスして使用する方法を記載します。

# 1.Jupyterのインストールと設定
ここではJupyterのインストールとリモート接続するための初期設定を行います。

いつも通り何かしらの手段(anacondaやpyenv等)で仮想環境を構築後、以下のコマンドで`jupyter`をインストールします。

“`bash
pip install jupyter
“`
その後、以下のコマンドを入力しconfigファイルを作成するとホームディレクトリ以下に`~/.jupyter/jupyter_notebook_config.py`が作成されます。

“`
jupyter notebook –generate-config
“`

このファイルの各々の該当行のコメントアウトを外し以下のように編集します。なお、`port=58888`は任意の番号で構いません。以降、こちらの番号で一貫して設定を行っていきます。それ以外はコメントアウトされたままで大丈夫です。

元記事を表示

Google Scholarのキーワード検索結果を引用数順に並べたリストを作成

# 環境
Mac OS Big Sir
python version 3.9.5

# やりたいこと
Google Scholarで文献を検索して、引用数が多い順に並び替えたリストを作成する。

# 使用するプログラムの準備
sort-google-scholarはWittmannF氏によりgithub上に公開されているプログラムで、python環境があれば実行可能です。
>参照
>https://github.com/WittmannF/sort-google-scholar

### Pythonのバージョンの確認
Python3が必要なので、バージョン確認。以前にAnancondaから入れてました。
“`: Terminal
% python –version
Python 3.9.5
“`
>Python3がない場合は以下から入手
>https://www.anaconda.com/products/individual

### sort-google-scholarをgithubからダウンロード

“`: Terminal
% git clone https://g

元記事を表示

Homebrewは手で直せる ファイラーRangerの濁点問題の修正

この記事の環境はMacOS Montereyです。

Homebrewにある[Ranger](https://formulae.brew.sh/formula/ranger#default “Ranger”)というファイラーのソフトを使っていた時、
濁点が正しく表示されない、修正できないという問題がありました。

![ranger_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/939698/9a527d3e-ddd9-ccec-21f2-58dc1a42c928.png)
名称未設定フォル「タ」になってる…

調べた所、MacではUTF-8にはNFD(Normalization Form Canonical Decompression)
というのが一部で使われていて、それを使用するプログラム(この場合だとpython3)を留意無く使用すると
このように濁点、半濁点が抜けたり、別で(コンヒ゜ュータみいたいに)表示されたりするそうです。

https://rcmdnk.com/blog/2019/11

元記事を表示

Visual Studio Codeでjupyter notebookのipynbファイルを開く

# VS codeが一番楽
ipynbファイルを開く方法はいくつかある.
– ブラウザ(ターミナルからjupyter notebook or jupyterlabを起動)
– [JupyterLab Desktop](https://github.com/jupyterlab/jupyterlab-desktop)
– Visual Studio code(拡張機能を使用)

ターミナルから起動する方法は起動時のカレントディレクトリがjupyterのルートになって,それより上の階層にjupyter内では移動できず,別のipynbファイルを開くには別のサーバーを立ち上げる必要があって面倒.

JupyterLab Desktopは独立したアプリになっているので,ターミナルからサーバー起動する面倒は無いが,ipynbファイルをダブルクリックで直接開くようなことはできない.ipynbファイルをJupyterLab Desktopで開く設定にしておけばダブルクリックで起動はできるが,ファイルはオープンされず,アプリ内でポチポチとディレクトリを辿る必要がある.

VS codeはipynbをポチ

元記事を表示

Pythonの野球シミュレーションでみるバント有効性 #4 バント時の得点期待値の変動

# 前回の記事
[Pythonの野球シミュレーションでみるバント有効性 #1 シミュレーション作成編ⅰ](https://qiita.com/con_2199/items/4bcf8ccb52363743bcc2)
[Pythonの野球シミュレーションでみるバント有効性 #2 シミュレーション作成編ⅱ](https://qiita.com/con_2199/items/37d40ecf09ca9ee37388)
[Pythonの野球シミュレーションでみるバント有効性 #3 シミュレーション作成編ⅲ](https://qiita.com/con_2199/items/4693fa8235369187f848)

本記事はこちらの続きになります。

# 目標について
 詳しくは前回の記事を参照してください。

# 前回のモデルについて
 前回も述べたように、モデルの妥当性については確証がないので、これからみるバント有効性についての調査も確証のないものとなる。従って、本記事の結果は参考程度に見て頂きたい。

# 方針
 前回のモデルにおいて、イニングを9回→1回、ランナーを表しているリスト

元記事を表示

Docker備忘録 「Python実行環境の作成」

# はじめに
* 何となくで使っていたDockerについて技術の再現性を高めるためにもまとめておく

# Dockerあれこれ
## 概要
* コンテナ型仮想環境を作成・実行・管理するためのプラットフォーム
* Dockerのソフトウェア自体はGo言語で書かれている

:::note info
メモ「Go言語とは」
Go言語はGoogleが開発しているオープンソースのプログラミング言語
標準パッケージが豊富・省略ができないものがありプログラマーの記述差異を減らせる
:::

## コンテナ型仮想環境の構成イメージ
* 以下であった資料を参考に作成
 https://www.udemy.com/course/docker-k/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2479387/d05ea649-91b8-32f3-4359-1d0e4bc9ae77.png)

## Dockerの実行イメージ
![image.png](https://qiita-image-store.s3

元記事を表示

Word2Vec、FastTextの比較(類義語編)

## はじめに
Word2Vecは単語を固定長のベクトルで表現する手法の一つです。
![w2v_001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2415251/3ee3c112-2398-1a09-8918-748eee4cd8f8.png)

学習に与えた文章の一部の単語をマスクし、その予測をすることで学習を行います。
![w2v_002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2415251/019f9017-547a-0430-60a6-dba742894910.png)

そのため、同じような文脈で登場する単語のベクトルが近くなる、という特徴があります。
図2の例では `新宿` の部分が `渋谷` になっている文章などを学習することにより `新宿` と `渋谷` のベクトルが近くなります。

Word2Vecは、学習に与えた文章に含まれる単語のベクトルしか作成できません。
一方、FastTextは、未

元記事を表示

concurrent.futures.ThreadPoolExecutor を用いて2台の Keithley 2401 sourcemeter から矩形波定電圧を印加する

# はじめに
複数台の Keithley 2401 sourcemeter(以下 2401)を動かす方法を述べる。
マルチプロセスで動かした方が正確なはずだが、なぜかProcessPoolExecutor では動かず、かつ、私の理解が足りないために理由もよくわからないため、ThreadPoolExecutor で動かす方法を述べる。

例として、2台とも矩形波定電圧を印加し、1台がもう1台に対して遅れて定電圧を印加する場合を考える。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669608/2a0251eb-3cf4-b046-43dd-ccdf6cc17bd1.png)

# 方法
### 事前準備
2台の2401本体を操作する。「MENU」→「COMMUNICATION」→「GPIB」から、2台の2401のGPIBアドレスをそれぞれ23および24に設定する(コード内で指定しているGPIBアドレスと一致させる)。

### コード

サンプルコード<

元記事を表示

Python 単一スレッド内で複数のスレッドを立ち上げてイベント制御したいときに読む (15秒で読めます)

“`python
from threading import Thread, Event
import time
import random

class MyEvent():
th1 = Event()
th2 = Event()

def task1(event: MyEvent):
while True:
event.th1.wait()
print(‘th1 run.’)
event.th1.clear()

def task2(event: MyEvent):
while True:
event.th2.wait()
print(‘th2 run.’)
event.th2.clear()

# manage_thがth1とth2を立ち上げる
def manage_th(event: MyEvent):
task_list = [task1, task2]
for task in task_list:
th

元記事を表示

OTHERカテゴリの最新記事