Python3関連のことを調べてみた2021年11月19日

Python3関連のことを調べてみた2021年11月19日

C# から Python へ JSON の受け渡し

C#からPythonへJSON文字列を送り、少し編集してC#側に戻すサンプル。
Pythonにあまり詳しくないC#経験者向けに書いています。

# 環境

– Windows10 64bit
– Visual Studio 2022
– .Net6.0
– Newtonsoft.Json
– Python 3.6.8

# C#側

標準入出力を介してやり取りする形になります。

“`c#:Program.cs
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Diagnostics;

// Pythonファイルのパス
string pythonFile = “Program.py”;

// Python側に渡すJSON
JObject inputJObj = JObject.Parse(@”{
‘CPU’: ‘Intel’,
‘Drives’: [
‘DVD read/writer’,
‘500 gigabyte hard drive’
]
}
“);

var proce

元記事を表示

Python ctypes 構造体 pragma pack (push,1)

本日はPythonのctypesに関する記事です。
実用的な内容ですので是非LGTM ストックお願いします ^__^

## ctypesとは

C言語のデータ構造をPythonで扱うことができるライブラリです。
Pythonをインストールするときにこちらのライブラリは標準でインストールされます。

Cの構造体をPythonでも扱いたいときなどに非常に便利です。

> [Python ctypes 公式ドキュメント](https://docs.python.org/ja/3/library/ctypes.html)

## 事例

今回紹介する例としては、

C側:構造体のデータをバイナリでログとして出力
Python:C側で吐き出されたバイナリのログデータを読み込んで表示

PythonでCのログを解析することで2次利用(可視化や機械学習)が各段にしやすいのでマスターしたい技術です。

# pragma pack (push, 1)

C側では構造体を定義するとき、 pragma pack をよく利用します。
これをPythonで定義するためには、下記が必要なので忘れないでください。

元記事を表示

【Python3】「ModuleNotFoundError」の対応

#はじめに
Webスクレイピングをやろうとして、WebDriverや beautifulsoupなどモジュールはインポートできてるのに、seleniumやbs4が認識されず、「ModuleNotFoundError」が発生してました。
結論としてデフォルトパスが通ってなかっただけなのですが、すごく遠回りして「sys.path.append()」でパスを追加するなど非エンジニアの私としては難しかったので、一番簡単だった方法を記載します。
※Windows10環境

・システムのプロパティから「環境変数」をクリックします。
![qiita1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2265307/ad57b515-3143-50a5-5e40-2db3d0248fca.png)

・ユーザの環境変数に新規で「変数名」をPYTHONPATHで「ModuleNotFoundError」となるライブラリのパスを「変数値」に指定。
(パスは「pip show selenium」などのコマンドで表示)
![qi

元記事を表示

WebTransportでもテキストチャットがしたい!(WebSocket比較あり)

# チャットなんてWebSocketで簡単にできるでしょ?

WebTransportをチェックしている皆様こんにちは。
特に仕事でもないのにWebTransporttが気になって仕方ない私です。
(しかも git add 直前に文字化けを直そうとしてファイルが消えましたが挫けません!)

さて、前回は簡単なechoをして1対1のやりとりができました。
そこで今回は複数人への送信ということでグループでのテキストチャットルームをやってみます。

まあ、WebTransportでもWebSocketとそんなに変わらずすぐできるでしょ。とか思っていました。

## 今回作ったもの

[ソースコードはgithub](https://github.com/alivelime/sample_webtransport_echo/tree/master/chat)

クラスター・サーバー上等でのmatplotlibに関するメモ

– [サーバサイドにおけるmatplotlibによる作図Tips](https://qiita.com/TomokIshii/items/3a26ee4453f535a69e9e)
– matplotlib.use(‘TkAgg’) and matplotlib.use(‘Agg’)

元記事を表示

matplotlibのsubplotはもうやめたい その2

Matplotlibのsubplotが使いにく過ぎて、はるか昔にこんな記事を書いた。https://qiita.com/ponnhide/items/fb375a610e4a9c0f743a
今回はその記事の続きで、subplot用の新しいツールをつくってみたという話。

# Matplotlibのsubplotは使いにくい
正直言って、Matplotlibの依然としてsubplotは使いにくい。僕はmatplotlibの自由度の高さが好きで、どれだけggplotを布教されてもmatplotlibを使い続けているのだけど、subplot周りの実装は真面目に微妙だと思う。そして、この点は他の人からも指摘がなされ、改善が求められている。

– https://twitter.com/kasparmartens/status/1381991445381406722?s=20
– https://github.com/has2k1/plotnine/issues/46

これらの要望に対する返しとして、最近matplotlibはある機能を実装してくれた。それが [subplot_mosaic]

元記事を表示

重相関係数の意味あい

重回帰分析において,重相関係数の二乗(決定係数ともいうが)は独立変数どもが従属変数をどの程度説明するかを表す。
つまり,重相関係数が 0.5 ということは,独立変数どもが挙って従属変数を説明しようとしているが 0.5^2(Python なら 0.5**2であるが)つまり,0.25(つまり 25 %)しか説明できないということ。これは,ヤバいよね。

なお,重回帰分析の最も単純な場合である回帰分析においては,重相関係数は相関係数の絶対値を取ったものであり,重相関係数の二乗は相関係数の二乗に他ならない。
つまり,独立変数と従属変数の間の相関係数が r の場合,重相関係数は abs(r) であり,重相関係数の二乗(決定係数)は r^2 である。

相関係数の絶対値が 0.7 以上であれば,「強い相関がある」というように判断されるが,「独立変数は従属変数の 0.7^2 = 0.49 つまり,半分以下しか説明できていないのだよ」ということだ。

“`R
> x = c(3, 2, 4, 5, 1)
> y = c(1, 3, 4, 5, 6)
> ans = lm(y ~ x)
> summ

元記事を表示

Python 配列の使い方(自分用)

#リスト(配列)の初期化
角かっこ「[]」で囲み、要素をカンマ「,」区切りで並べる

“`python
empty_list = []

# 整数配列
int_list = [0, 1, 2]
“`

# 要素へのアクセス
###インデックスで
“`python
mylist = list(range(10))

# 正数は先頭からのインデックス
n = mylist[1]

# 負数は末尾からのインデックス 末尾の要素のインデックスが-1
n = mylist[-2]

# popメソッドで指定したインデックスにある要素をリストから取得して削除
value = mylist.pop() # インデックスを指定しない場合は末尾の要素が削除される
print(‘popped value:’, value) # popped value: 9
print(‘mylist:’, mylist) # mylist: [0, 1, 2, 3, 4, 5, 6, 7, 8]
“`
### スライスで
“`python
mylist = list(ran

元記事を表示

AWS Lambdaからsuds-py3を使ってSOAP API連携をしてみた

RESTにとって変わられがちですが、ちょっと触る機会があったので、
表題の件を簡単かつざっくり解説していきます。

なお連携対象はOracle B2C ServiceのSOAP APIの想定です(http://documentation.custhelp.com/euf/assets/devdocs/unversioned/Connect_KFAPI/Default.htm)

##環境
Python3.8
AWS Lambda プロキシ統合あり

ライブラリ
suds-py3 1.4.4.1

##準備

まずはライブラリをインストール

“`
$ pip3 install suds-py3
“`

##実装

内容は連携するAPIに準じて読み替えてください。
インポート関係はこんな感じです。

“` python3
import os
import json
from suds.client import Client
from suds.wsse import *
from suds.sudsobject import asdict

WSDL = os.environ[

元記事を表示

俺的、Pythonに標準で搭載された便利機能たち

Pythonの利点はやはり`pip`を使って超簡単に超便利なモジュールをインストールできること. だが, Python自身も負けてない. ここでは筆者がよく使うPythonに標準搭載の便利だと思う機能を適当に紹介していく. いろんなものを詰め込んだのでかなり雑多な内容になってしまったが, これを読んだ人のPython人生の一助とならんことを願う.

# `functools.partial`

引数を部分的に指定された関数を生み出せる.

“`python
from functools import partial

def super_genius_function(arg1, arg2, arg3, args4, kwarg1=None):
# do something
return

# 最初の二つの引数を固定
arg12_fixed = partial(super_genuis_function, 1, 2)
# kerwordで指定もできる
arg34_fixed = partial(super_genuis_function, arg3=3, arg4=4

元記事を表示

Python3: Google Cloud Storage にアクセス

GCE の Ubuntu 21.10 で確認した方法です。GCE で実行するので、認証の部分のコードを省略できます。

スクリプトでアクセスする方法はこちら
[Google Cloud Storage にスクリプトでアクセス](https://qiita.com/ekzemplaro/items/cd648c8f14c7421a928b)

バケットの一覧

“`py:list_bucket.py
#! /usr/bin/python
#
# list_bucket.py
#
from google.cloud import storage
#
client = storage.Client()
#
for bucket in client.list_buckets():
print(vars(bucket)[‘name’])
print()
#
“`

ファイルの一覧

“`py:list_files.py
#! /usr/bin/python
#
# list_files.py
#
from google.cloud import storage
#

元記事を表示

スライスでtorchのunsqueeze的な処理

スライスにNoneを追加するとNoneを追加した次元に空の次元が追加される。

“`py
>>> import numpy as np
>>> x = np.ones((32,27,517))
>>> x[:,:,None,:].shape
(32, 27, 1, 517)
“`

元記事を表示

python の zip 関数の動き

# zipが何をしているか?

zipがどのように動くか気になったのでpythonチュートリアルで調べた。

[pythonチュートリアル 5. データ構造より抜粋](https://docs.python.org/ja/3/tutorial/datastructures.html#nested-list-comprehensions)

“`python
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
]
print(list(zip(*matrix)))
“`
>[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]

ネストしたfor

“`
vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
list = [num for elem in vec for num in elem]
list = []
for elem in vec:
print(elem)
for num in elem:

元記事を表示

pd.date_rangeより特定日時のインデックスを取得する方法

追記
`pandas.get_loc()`や`pandas.searchsorted()`というメソッドがあることを教えていただきました.コメント欄をご覧ください.

———————————

暗算でも良いですが,パソコンに考えてもらった方が安心ですよね.
numpy.whereを使います. numpyは不要です.コメント欄をご覧ください.

“`python3
import pandas as pd
import numpy as np

# 時系列の作成
times = pd.date_range(‘2015-04-01 00’, ‘2015-04-30 18′, freq=’6H’)

# 特定日時
t = ‘2015-04-13 12’

# 特定日時のインデックスの取得
i = np.where(times==t)[0][0]
“`

最初の[0]はタプルのアンパック,次の[0]はnumpy.ndarrayのアンパック,最終的にnumpy.int64を返します.

numpy.whereはTrue

元記事を表示

Pythonによるメール配信(SMTPAuthenticationError )

環境:Windows10 pro
python 3.9
VsCode

勉強の為に
pythonからコードを書いてメールをテスト送信しました。

““
from email import message
import smtplib

smtp_host = ‘smtp.gmail.com’
smtp_port = 587
use_smtps = any
from_email =’#####@gmail.com’
to_email = ‘####@outlook.jp’
username = ‘####@gmail.com’
password = ”

msg = message.EmailMessage()
msg.set_content(‘Test email’)
msg[‘Subject’] = ‘Test email sub’
msg[‘From’] = from_email
msg[‘To’] = to_email

server = smtplib.SMTP(smtp_host, smtp_port)
server.ehlo()
server.starttls()
s

元記事を表示

ApexLegendsの戦歴をPythonで取得してみよう

# はじめに
この記事ではPythonのライブラリである[ApexTrackerPy](https://github.com/nerrog/ApexTrackerPy)を使用したPythonでのApexlegendsの戦歴の取得方法などを解説します。

# 目次

* APIの登録
* APIの種類について
* 登録
* 実際に戦歴を取得してみる
* APIの呼び出し方
* 値を取り出してみる
* おまけ:現在のマップを取得してみる

# APIの登録
## APIの種類について
ApexTrackerPyでは[UNOFFICIAL APEX LEGENDS API](https://apexlegendsapi.com/)と[TRACKER NETWORK API](https://tracker.gg/developers/docs/titles/apex)の2種類に対応しています。
UNOFFICIAL APEX LEGENDS APIは戦歴以外にもサーバーステータスやマップローテーションなど多くの情報が取得できます。
戦歴(プレイヤーステータス)

元記事を表示

AOJトライに関する知識知見の記録共有 :Volume0-0008

# 概要
Sum of 4 Integers

https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0008

# コード
TIPS:オペランド定義域を可変化

“`
import itertools

def calc_num_opr(sm, inf=0, sup=10):
c = range(inf, sup)
return [[a,b,c,d] for a, b, c, d in itertools.product(c, c, c, c) if sum([a,b,c,d]) == sm]

def core(arg):
num_opr = calc_num_opr(int(arg))
return len(num_opr), num_opr

def app(*args):
return [[arg, core(arg)] for arg in args]

from pprint import pprint
try:
pprint(app(
# b

元記事を表示

今までの振返り +α(算術計算,変数,リスト辞書 等)

# 今回の授業資料

# 本日の内容
### 新しいpython3

元記事を表示

[Python] 3.10.0

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/f6f5fd80-52e6-9e3f-5484-3a03fcbc6e54.png)

Major new features of the 3.10 series, compared to 3.9
Among the new major new features and changes so far:

PEP 623 — Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
PEP 604 — Allow writing union types as X | Y
PEP 612 — Parameter Specification Variables
PEP 626 — Precise line numbers for debugging and other tools.
PEP 618 — Add Optional L

元記事を表示

[Python3 / pandas] colaboratory上で、pandas_profilingのProfileReportを実行するとエラーコンボが発生

# Summary(概要)

発生したエラーはこれら。

“`python
# 1. join_axesなんて引き数は知らないよ
TypeError: concat() got an unexpected keyword argument ‘join_axes’

# 2. pandas_profiling.mplstyleってファイルが見つからないよ
FileNotFoundError: [Errno 2] No such file or directory: ‘/usr/local/lib/python3.7/dist-packages/pandas_profiling/pandas_profiling.mplstyle’

# 3. 新しいバージョン使いたかったらruntime再起動してね
WARNING: The following packages were previously imported in this runtime:
[pandas_profiling]
You must restart the runtime in order to use newly

元記事を表示

OTHERカテゴリの最新記事