Python関連のことを調べてみた2020年07月27日

Python関連のことを調べてみた2020年07月27日

スタック画像をnumpy配列へいれる

CTやMRI画像のように、xy二次元画像がz枚入っているデータセットを、numpyにいれるやり方。

“`python

import cv2
import glob
import numpy as np

volume = []
files = glob.glob (“./data/*.tif”)
for myFile in files:
image = cv2.imread (myFile)
volume.append (image)
“`
xy画像は`./data`に入っている。
これを一枚ずつ`image`に入れては三次元配列`volume`に`append`している。

確認は、

“`
print(np.array(image).shape)
“`
などでできる。

# 参考
https://stackoverflow.com/questions/37747021/create-numpy-array-of-images

元記事を表示

python 辞書型の内包表記

# 内包表記を使って辞書型の変数を作る

リスト型の変数を内包表記で表せるのと同様に、
次のように辞書型の変数も内包表記で表すことができます。

“`python
S = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’]
L = [0, 1, 2, 3, 4]

dic = {s:l for s,l in zip(S,L)} # {key:value for item in iterator}

print(dic) # 出力結果: {‘A’: 0, ‘B’: 1, ‘C’: 2, ‘D’: 3, ‘E’: 4}
“`

ちなみに今回は例として内包表記を使いましたが、
この場合は“`dict(zip(S, L))“`とするほうが簡単です。(コメントありがとうございました)

## forループよりも内包表記を使ったほうが良い

内包表記を使うと次のメリットがあるようです。[^1]

> Pythonで内包表記を使うことで以下の様なメリットがあります。
>
> – コードがシンプル
> – 可読性の向上
> – 実行速度が高速
>
> 実行速度は通常のForループを使用

元記事を表示

M5Stackでデジモンを飼う

***注意!アグモンが動くだけです。育成は出来ません!***

![IMG_6279.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/467051/9365db35-619b-03ec-93aa-6f759ba80b34.jpeg)

#概要
ゴキゲンな蝶になってデジモンを作りました。
M5Stackをあまり使ったことがなかったので、UIFlowとLCDの使い方の勉強を兼ねて、昔ターミナルで飼おうとして途中まで作っていたプログラムをM5Stack用に書き直した。
Stayしがちなイメージだらけの頼りない翼でも、きっと飛べるさ!

#ソースコード

“`python
from m5stack import *
from m5ui import *
from uiflow import *
import random
import time

def reverse_dots(dots):
for _dots in dots:
_dots.reverse()

stand = [

元記事を表示

pytorchで自作データセットを用いる方法

ここでは、pytorchで用意されているデータセット以外を用いる際のデータローダの作成方法を解説します。
今回はsklearnで用意されているデータセットを用います。

## 実装

“`
import numpy as np
import torch
from torch import nn
import torch.nn.functional as F
import torchvision
from torchvision import transforms
from torch import optim
from torch.utils.data import DataLoader, Dataset, TensorDataset

# MNISTデータセットの読み込み
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split

mnist_X, mnist_y = fetch_openml(‘mnist_784’, version=1, data_

元記事を表示

2. Pythonで綴る多変量解析 5-2. ロジスティック回帰分析[損失関数]

##**損失関数(loss function)**
* 損失関数をはじめ、誤差関数、コスト関数などと、いくつか呼び名があります。
* 最適な重みパラメータにたどりつくために、一つの指標を手がかりにして計算をくりかえす。その指標のことです。
* 一般に**2乗和誤差**や**交差エントロピー誤差**が用いられます。
* 誤差という、性能の悪さを示す指標ですが、モデルはそれがなるべく小さくなるような重みパラメータを見つけます。

##**2乗和誤差(mean squared error)**
* **2乗和誤差(またの名をsum of squares error:SSE)**とは、予測値と観測値との差の2乗を合計したものです。
* 実際に観測されたデータの平均値を基準として、**観測値全体の変動(sum of squares total:SST)**から、回帰による**予測値全体の変動(sum of squares regression:SSR)**をひいたもの、ともいえます。

![2_5_2_02.PNG](https://qiita-image-store.s

元記事を表示

まだプログラミングで消耗してるの?PYNQで始めるFPGA開発入門

## PYNQで始めるFPGA開発 – 入門編

#### TL; DR

FPGAってなに?開発コストが高いんじゃないの?Pythonで開発できるってほんと?初心者でも簡単にC++とPythonだけでFPGA開発する方法を調べました!まだプログラミングで消耗している非フルスタックなエンジニアの方は、非ノイマン型エンジニアになって~~もっと消耗しましょう~~ハードも作れるフルスタックなエンジニアを目指しましょう!!

#### はじめに

FPGAはField-Programmable Gate Arrayの略で、製造後に回路構成を変更することができます。CPUやGPUなどの汎用集積回路と違い、FPGAは用途に応じて構成を変更することができるため、ハマる用途ではCPUやGPUよりも速い処理が可能です。用途に特化した回路で処理するためオーバーヘッドが少なく、高い電力効率も実現できます。

CPUやGPUを使うには設計した計算アルゴリズムをC言語などのソフトウェアプログラムとして記述します。FPGAを使うには論理回路を設計し、Verilogなどのハードウェア記述言語(HDL)で回路を記述

元記事を表示

Pythonのlambda式を用いたラムダ計算の基礎表現

~~切削~~拙作記事『[Schemeプログラミング一時間体験講座](https://qiita.com/ytaki0801/items/fc4b0d84809206517f0b)』で言及したこともあって,ラムダ計算の基礎表現をまとめておこうと思ったが,そのような記事はQiitaにもWeb全体にも星の数ほどあり([こちら](https://www.youtube.com/watch?v=eis11j_iGMs)の動画がおすすめ),それらを参照…で済ませようと思ったのだが,ふと,あらためてラムダ(λ)記法から説明するのではなく,最初からプログラミング言語のlambda式を用いたラムダ計算基礎としてまとめようと思い,この記事を書いてみた.

なお,元記事のSchemeではなくPythonにしたのは,Schemeだとあまりに簡単に書けてしまうのと,Pythonの方が需要がありそうだから(元記事どこ吹く風).実行例については,Python3で確認している.

#Pythonのlambda式の基礎

関数$f(x)=x$(引数に与えた値がそのまま戻ってくる)を表現したい時,関数名`f`は特に必要

元記事を表示

pipenv でカレントディレクトリに Pipfile が作成されず、親ディレクトリの Pipfile を参照してしまう

# 3行で

– `pipenv` はデフォルトで 2階層上のディレクトリまで再帰的に `Pipfile` を検索し、存在すればそれを参照してしまう
– 環境変数 `PIPENV_NO_INHERIT` を設定すると、カレントディレクトリの `Pipfile` だけ参照できる
– 環境変数 `PIPENV_MAX_DEPTH` で、再帰的に検索する階層の数を指定できる
(デフォルトは `3` で、2階層上まで検索する)

# 問題
Python の環境構築に `pipenv` を導入し、試しにいくつかコマンドを実行して使い方を確認していた。

その後、プロジェクト用のディレクトリを作成して `pipenv install` を実行すると、親ディレクトリにある `Pipfile` を参照してしまい、新たに仮想環境が構築されなかった。

## 再現させてみる
環境構築を試す。

“`bash
[dtsu@localhost somedir]$ pipenv –python 3
Creating a virtualenv for this project…
Pipfile: /hom

元記事を表示

エセ関西弁アナグラム

###作りました
クソ診断をしていると,毎日クソみたいなポストをする必要があるので自動化しようかなと思いひな型を作りました.

“`python
import random

def inv_dict(d):
return {v:k for k,v in d.items()}

ese = {“エ”:1, “セ”:2, “関”:3, “西”:4, “弁”:5}
mahi = {“ま”:1, “っ”:2, “ひ”:3, “好”:4, “き”:5}
inv_ese = inv_dict(ese)
inv_mahi = inv_dict(mahi)

instr = “” #将来的にはAPIで自動取得
for i in range(5):
i = random.randrange(4)+1
instr += inv_ese[i+1]
print(instr)

outstr= “”
for txt in list(instr):
outstr += inv_mahi[ese[txt]]
print(outstr)

if instr == “エセ関西弁

元記事を表示

【ラビットチャレンジ(E資格)】深層学習(day1)

#はじめに
2021/2/19・20に実施される日本ディープラーニング協会(JDLA)E資格合格を目指して、ラビットチャレンジを受講した際の学習記録です。

ラビットチャレンジは「現場で潰しが効くディープラーニング講座」の通学講座録画ビデオを編集した教材を活用したコースです。
質問等のサポートはありませんが、E資格受験のための格安(2020年6月時点での最安値)の講座です。

詳細は以下のリンクからご確認ください。
[](http://study-ai.com/jdla/)

#全体像
ディープラーニングは、結局何をやろうとしているのか。
→ 重みとバイアスを最適化して、誤差を最小化するパラメータを発見すること。

– 入力層:2ノード1層、中間層:3ノード2層、出力層:1ノード1層のネットワーク
スクリーンショット 2020-07-18 9.27.26.png【ラビットチャレンジ(E資格)】機械学習

#はじめに
2021/2/19・20に実施される日本ディープラーニング協会(JDLA)E資格合格を目指して、ラビットチャレンジを受講した際の学習記録です。

ラビットチャレンジは「現場で潰しが効くディープラーニング講座」の通学講座録画ビデオを編集した教材を活用したコースです。
質問等のサポートはありませんが、E資格受験のための格安(2020年6月時点での最安値)の講座です。

詳細は以下のリンクからご確認ください。
[](http://study-ai.com/jdla/)

#第1章:線形回帰モデル
###線形回帰(simple linear regression)
ひとつの予測変数によって、量的応答変数を予測する。
$$ \hat y = \hat{a}x+\hat{b} \quad (\hat{a}:傾き, \hat{b}:切片) $$

– 学習データ
$$ {(x_1,y_1),(x_2,y_2),…,(x_n,y_n)} $$
– (回帰)残差(residual)
$$ e_i

元記事を表示

Pythonのエラー ‘shift_jis’ codec can’t encode character ‘\u6c2e’ の解決方法

#はじめに
 備忘録のために書くので、余計なことは書きません。Pythonでテキストファイルにある文字を別のテキストファイルに移す処理を書いていたら

“`
‘shift_jis’ codec can’t encode character ‘\u6c2e’
“`
というエラーが返されました。どうやら文字のエンコードのエラーらしいです(勉強不足です)
特定の文字だけをreplaceして消す方法もあるようなのですが、種類が多すぎて面倒です。

#解決法
 対象のPythonコードの初めにこれを記述してください。

“`
import codecs
codecs.register_error(‘none’, lambda e: (‘?hoge?’, e.end))
“`

そして、ファイルを開く処理のopen関数を以下の様に変更してください。

“`
f = open(‘file.txt’, ‘w’, encoding=’cp932′, errors=’none’)
“`

そうすれば、エンコードできない文字だけ?hoge?と置き換わります。消したい場合は’?hoge?’を”

元記事を表示

MBTiles のデータを Python から参照する

## 概要

– MBTiles ファイルは GeoJSON から tippecanoe で作成
– 本記事の GeoJSON は国土数値情報から入手したデータを利用
– 国土数値情報 | 駅別乗降客数データ(平成 29 年)
– https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-S12-v2_3.html

## tippecanoe

– https://github.com/mapbox/tippecanoe

MBTiles ファイルを作成します。

“`bash:tippecanoe
LAYER_NAME_S=station
MIN_ZOOM_LEVEL_S=10
MAX_ZOOM_LEVEL_S=15
IN_S=./geojsons/N05-19_Station2.geojson
MBTILES_FILE_S=./mbtiles/N05_19_Station2.mbtiles

tippecanoe \
-z${MAX_ZOOM_LEVEL_S} \
-Z${MIN_ZOOM_LEVEL_S} \

元記事を表示

Django-allauthでユーザー認証を使う

###はじめに
高校一年生のプログラミング初心者です。Qiitaで記事を書くのは初めてなので多少の間違いがあるかもしれません。

##django-allauthとは何か
django-allauthとはDjangoを使用したUser周りの処理を簡単に実装できるようにしたモジュールです。Eメールを使用した認証方法などが実装でき、またソーシャルログインなどの実装もこのモジュールを使用することによって比較的簡単に実装できるようになっています。

##インストール/設定
pipでdjango-allauthのインストールをする。

“`terminal
pip install django-allauth
“`
settings.pyのINSTALLED_APPS内において必要なソーシャルログインの数だけコードを書き加える。

“`main_project/settings.py
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contentt

元記事を表示

「データサイエンス100本ノック(構造化データ加工編)」 Python-014 解説

##Youtube
[動画解説](https://youtu.be/ceMOn5IjJL0)もしています。

##問題
P-014: 顧客データフレーム(df_customer)から、ステータスコード(status_cd)の末尾が数字の1〜9で終わるデータを全項目抽出し、10件だけ表示せよ。

##解答
“`:コード
df_customer.query(“status_cd.str.contains(‘1$|2$|3$|4$|5$|6$|7$|8$|9$’)”, engine=’python’).head(10)
“`

“`:出力
customer_id customer_name gender_cd gender birth_day age postal_cd address application_store_cd application_date status_cd
4 CS001215000145 田崎 美紀 1 女性 1995-03-29 24 144-0055 東京都大田区仲六郷********** S13001 20170605 6-20090929-2
9 C

元記事を表示

OpenCVでマウスイベントを取得する ~GUIな集中線ツールを作る~

# はじめに
漫画のように集中線の加工がされている画像を見かけた。
ググるとスマホアプリやWebアプリが公開されており特段珍しいものではなかったのだが、私もこれを作ってみたくなった。

# 集中線を描く関数

最初はアレもコレも定数だったが、自然に見えるようあちこちに乱数を付与していった。
また、画像が指示されていないときに単色画像を用意したり注目範囲の指定がないときでも自動でそれっぽく集中線を描くようにした。このようにいろいろ肉付けしていくのは楽しいものだ。
ただし勉強不足につき半透明は実装できていません。

“`Python:ソース1
import sys
import numpy as np
import cv2
import random
import math

def speed_line(img, center=False, radius=False, color=(255,255,255)):
random.seed()
h, w = img.shape[:2]

# 中心と半径が未設定の場合、自動で設定
xc = w//2 if ce

元記事を表示

pythonでJIS X 0208をShift-JISやUTF-16に変換する

あることでJISコードを日本語変換したくなったときのやり方が分からなかったのでメモ。

# 方法
公開されているJIS X 0208コードの変換表を用いて連想配列を作成する
下は対応表
> http://unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT
> http://ash.jp/code/unitbl21.htm

# プログラム
“`python:jis.py

import os
ar = []
with open(‘./JIS0208.TXT’) as f:
for t_line in f:
# 先頭がコメントの部分は除く
if t_line[0] != “#”:
sjis, jis, utf16 = os.path.basename(t_line).split(‘\t’)[0:3]
ar.append([jis, utf16])
# 例) ar[‘0x3B3D’] -> ‘0x8695’
# JIS -> UT

元記事を表示

Atcoderで緑になった話

こんにちは。tanipenと申します。
この度[Atcoder](https://atcoder.jp)にてレートが800を超え、名前が緑色になったので、自己紹介がてらこの記事を書かせていただきたいと思います。これから競技プログラミングをやる方の一助となれば幸いです。
スクリーンショット 2020-07-26 19.48.14.png

# Atcoderをはじめるまで
プログラミングにはじめて触れたのは中学生の時でしたが、周りにプログラミングを本気でやっている人がいなかったこと、当時は情報獲得手段に乏しかったことから、細々とひとりで簡単なプログラムを組むにとどまり、AtcoderのAの字もみることなく月日が流れました。

大学に入学したのち、TwitterのFFの方々が盛んにAtcoderの結果を載せるのを見ては

元記事を表示

discord.pyを1.3.4にしなきゃ動かなくなったってお話

# 経緯
先日discord APIのアップデートが入り、バージョン1.3.4以前のdiscord.pyでは、以下のようなエラーが発生して動作しなくなってします。

“`python
TypeError:__new__() got an unexpected keyword argument ‘deny_new’
“`
(なんか1.2.5の時も似たようなのありましたね。`KeyError`でしたっけ?)

# 解決法
discord.pyのバージョンを1.3.4以上にしてあげてください(記事掲載時点での最新は1.3.4)。
ちなみに現在のバージョンを確認するには、コンソール上でPythonのインタプリタ(対話モード)を開き、以下のコマンドを実行してください。

“`py
>>> import discord
>>> print(discord.__version__)
1.3.4
“`
この場合は記事執筆時点で最新の、1.3.4がインストールされています。
今この記事を見ている人の大半は1.3.4以前のものを使っていると思いますので、1.3.3など違う出力になっていると思います

元記事を表示

Google ColabにMeCabとipadic-NEologdをインストールする

#1.はじめに
 **Google Colab** に **MeCab** と **ipadic-NEologd** をインストールしようと思ったら意外に手間取ったので備忘録として残します。

#2.コード
 色々なWeb情報を漁った結果、インストールには下記のコードがベストではないかと思います。

“`python
# 形態素分析ライブラリーMeCab と 辞書(mecab-ipadic-NEologd)のインストール
!apt-get -q -y install sudo file mecab libmecab-dev mecab-ipadic-utf8 git curl python-mecab > /dev/null
!git clone –depth 1 https://github.com/neologd/mecab-ipadic-neologd.git > /dev/null
!echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n > /dev/null 2>&1
!pip ins

元記事を表示

OTHERカテゴリの最新記事