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

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

N分木を理解するために解説しながら自力実装してみた

# N分木を理解するために解説しながら自力実装してみた
## N分木とは

木構造のデータ構造のうち、親ノードの有する子ノードの数がN個以下であるデータ構造の事を指す。

二分木の一般形であるが、第一子ノード(first child)と兄弟ノード(sibling)に分ける事で、結局二分木で表現できる。

二分木で表現できれば、操作や探索は二分木の方法が適用できる。

## 目的
* N分木を学ぶことで、データ構造とアルゴリズムに対する理解を深めたい。
* pythonでN分木データ構造を実装する。
* 先に[二分木を学んだので](https://qiita.com/tagtagtag/items/c5c460633e1ac864937a)、その応用としてN分木を学び理解を深める。
* 二分探索木の理解を深めたい。 ⇒ [親記事](https://qiita.com/tagtagtag/items/0e04c584f17ebfb7afbb)

## 内容
### データ構造とノードの定義

仮に以下のような複数の子を持つノードを有した木構造を定義する。
![generic.png](ht

元記事を表示

list.split(“文字”)みたいなことをやりたい場合

# はじめに
pythonのsplit()関数はよく使うが、文字列にしか使えない。
listの時も使いたいと思って調べたが、意外と見つからない。
したがって備忘録がてらコードを書いた。

# やりたいこと
文字列に対して行うsplit()をlistに対してもやりたい。
文字列に対してのsplit()の例は

“`
s = “1032”
s.split(“0”)
# [‘1′, ’32’]
“`

具体的には

“`
a = [“1″,”0″,”3″,”2”]
#これはエラー
#a.split(“0”)
#[[“1”],[“3″,”2”]]
“`

みたいなことがしたい。

# コード

“` list_split.py
def list_split(L,moji):

return_L,tmp = [],[]
for val in L:
if val != moji:
tmp.append(val)
elif val == moji:
return_L.append(tmp)

元記事を表示

pythonのKeyErrorを何とかする

# はじめに
Pythonを触っていて、

“`
“KeyError: None”
“`

というエラーが出た。原因と修正方法をメモ。(コメントでいただいた内容に修正しました。)

# 原因
`foo[‘bar’]`と、`bar`というキーを指定しているが、そのキーが存在していないと考えられる。

# 修正方法
タイプミスの可能性があるため、自分でキーを把握しているorプログラム内にキーが記述されている場合は見直す。
無い場合は、適切な位置に以下のコードを挿入する。

“`python:

print(foo.keys())
…#ここでエラーが起こる
“`

`[‘bar’]`部分を適切に修正する。

元記事を表示

エラー対処[Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR]

# はじめに
tensorflowを使いたいなーと思ってCudnnをインストールしたら、また新しいエラーが出てきました。結構困ったのでメモります。

# エラー内容
GPU自体はtensorflowで読み込めているのだが、実行するとなんだかエラーが発生する。エラー内容は以下。

“`sh:error
…:…: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
…:…: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
Traceback …

“`

# 解決方法
以下のコマンドを実行すると無事解決した。

“`sh:
$ export TF_FORCE_GPU_ALLOW_GROWTH=true
“`

# 参考

元記事を表示

python tkinter うまく作動しない

pythonのtkinterについての質問です。下のソースコードを実行してみたところ、
  
~~~~~~~~~~~~~~~~~~~
import tkinter as tk
root = tk.Tk()
root.mainloop()
~~~~~~~~~~~~~~~~~~~

エラーが発生してしまいました。↓
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KeyboardInterrupt Traceback (most recent call last)
\ in \
1 import tkinter as tk
2 root = tk.Tk()
—-> 3 root.mainloop()

~/anaconda3/lib/python3.7/tkinter/\_\_init\_\_.py in mainloop(self, n)

元記事を表示

Python 三項演算子でelifを書く

条件式の判定結果を1ライナーでprintする際にちょっと迷ったのでメモします。

# if elseの書き方
これはわかりやすい。

“`python:if-else
print(‘a’ if var == ‘a’ else ‘not a’)
“`

# if elifの書き方
if-else-if-else-if…..と書いていく。
(elifで書けるようにして欲しいですな)

“`python:if-elif-else
print(‘var is a’ if var == ‘a’ else ‘var is b’ if var == ‘b’ else ‘var is …’)
“`

元記事を表示

【python】画像処理その4 ~フィルター~

#SciPy#
「サイパイ」って読むらしいです.
この中にある`ndimage`と`signal`を使っていきますです.

#ガウシアンフィルタ#
今回はガウシアンフィルタをかけていきます.
画像が平滑化されます.
とりあえずやってみましょう.
ガウシアンフィルタとはなんぞ?って人はこちら→[ガウシアンフィルタの解説](https://imagingsolution.blog.fc2.com/blog-entry-88.html)

##コードと結果##

“`python
from PIL import Image
import numpy as np
from matplotlib import pylab as plt
from scipy import ndimage
#画像を開いてグレーにしてNumPy配列にする
img = np.array(Image.open(‘lena.jpg’).convert(‘L’), ‘f’)
#ガウシアンフィルタをかける
img_gaussian = ndimage.filters.gaussian_filter(img, 10)
#表示

元記事を表示

pyenvインストール(メモ)

# 目的
2系と3系を共存させるためpyenvを使用する。
手順の備忘録のため記載しておく

“`
# sudo yum install bzip2-devel xz-devel
# curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
# echo ‘export PATH=”/home/ec2-user/.pyenv/bin:$PATH”‘ >> ~/.bash_profile
# echo ‘eval “$(pyenv init -)”‘ >> ~/.bash_profile
# echo ‘eval “$(pyenv virtualenv-init -)”‘ >> ~/.bash_profile
# echo ‘unalias python’ >> ~/.bash_profile
# source ~/.bash_profile
# pyenv install 3.6.5
# pyenv global 3.6.5
# python –version
“`

元記事を表示

dataFrame のindexとcolumnの一覧を取得する方法

##作業環境
Windows 10
PyCharm

## コード

“`python
import pandas as pd

df = pd.DataFrame([[1, 2, 3], [4, 5, 4]], columns=list(‘ABC’))

print(df.index.values) # indexを配列で表示する
print(type(df.index.values))
print(df.index.values.tolist()) # indexをリストで表示する
print(type(df.index.values.tolist()))

print(“\nここからcolumn”)
print(df.columns.values) # columnを配列で表示する
print(type(df.columns.values))
print(df.columns.values.tolist()) # columnをリストで表示する
print(type(df.columns.va

元記事を表示

ToDoリスト作り[Python&Django]

#目的
[参考][Djangoで作るToDoリスト](https://qiita.com/acecrc/items/a4302ca6cf0897c45302)
pythonで簡単なものを作ろうと思った際に、ToDoアプリが良いのではないかと思い挑戦したみた。

– 機能
– 一覧表示
– 詳細表示
– リストの作成&編集
– 削除

この4つの機能を持つToDoアプリを作成していきます。

#環境
pythonとDjangoのバージョンは以下の通りである。
Djangoは後の手順の中で仮想環境にインストールする。

“`
$ python -V
Python 3.7.3
“`

“`
$ pip list
Package Version
———- ——-
Django 2.1.8
“`

#作成手順
大雑把に分けると
1. 開発環境を整える
2. ToDoアプリ作成(python編)
3. ToDoアプリ作成(html編)
4. マイグレーション
5. 動作確認
の5ステップ
#1.開発環境を整える
##仮想

元記事を表示

テスト 橘田 応用数学、機械学習、深層学習:前編1

# 応用数学
## 線形代数学:行列~特異値分解
特異行列の求め方をすっかり忘れていて、自信が無くなった。(100文字以上書く)

# 機械学習
## 線形回帰モデル:機械学習とは~ハンズオン

# 深層学習(前編1)
## Section1:入力層~中間層:深層学習1-1~1-6

これを「未投稿」のまま完成まで続け、レポートが完成したら「投稿」すれば、1つのURLになるのかな?

元記事を表示

Pandasユーザーガイド「マルチインデックス・高度な索引」(公式ドキュメント日本語訳)

本記事は、Pandas の公式ドキュメントの[User Guide – MultiIndex / Advanced Indexing](https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html)を機械翻訳した後、一部の不自然な文章を手直ししたものである。
なお、本記事作成時点で Pandas の最新リリースバージョンは`0.25.3`であるが、将来性を加味して本記事の文章は開発版`1.0.0`のドキュメントをもとにした。

誤訳の指摘・代訳案・質問等があればコメント欄や編集リクエストでお願いします。

# マルチインデックス・高度な索引

この章では、[マルチインデックスによる索引](#階層的索引(マルチインデックス))および[その他の高度な索引機能](#その他の高度な索引機能)について説明します。

基本的な索引に関するドキュメントは、[データの索引と選択](https://qiita.com/nkay/items/d322ed9d9a14bdbf14cb)を参照してください。

> :warning:

元記事を表示

Xamarinでスマホアプリを作り、Djangoで管理する。

「とりあえずアプリ作ってみようかな」という事で、どんな手順で作っていってるのか備忘録。
(具体的な手順は書いておらず「こういうところを参考に作ったよ」という程度にしか書いてないです。すみません。)
(一部手順漏れがある気がするので、見つかり次第更新します。)

# 開発環境

– OS
– `Windows 10 Pro`
– スマホアプリ
– `Xamarin` + `EntityFramewark`
– 利用想定として、スマホを使用するため、LinuxではなくWindowsで構築
– クロスプラットフォームで作りたかったので『Xamarin』を採用
– ORマッパーは知見のある『EntityFramewark』を採用
– 管理アプリ
– `Django` + `AdminLTE`
– 利用想定として、Webサーバを立てる必要があるので、WindowsではなくLinuxで構築
– 知見がある+掘り下げて勉強したかったので『Django』を採用
– イケてる見た目に

元記事を表示

「Flask+Vue.jsでお願い」と言われて試みたことメモ

## 先人の知恵を参考に環境構築
Vue.js(vue-cli)とFlaskを使って簡易アプリを作成する【前半 – フロントエンド編】
https://qiita.com/mitch0807/items/2a93d93adbf6b5fc445c

### 環境構築で出たエラー

“`
Module build failed: ValidationError: Invalid options object. Sass Loader has been initialised using an options object that
does not match the API schema.
“`

>モジュールのビルドに失敗しました:ValidationError
無効なオプションオブジェクト。 Sass Loaderは、オプションオブジェクトを使用して初期化されました。
APIスキーマと一致しません。

そのときはこれを参考にした。
npm installでError:EACCESがでたら
https://qiita.com/Gaddict/items/8c76d92bd0a

元記事を表示

inputで0から3以外を入力した時に再入力へ促したい

この内容で実行しようと思っています。
inputで選択できるのは0-3です。
私はこのコードに

もし0.1.2.3以外を入力したら

0-3の数字を入力してください

と出力してもう一度数字を入力できるようにしたいです。
できないなりに
if inputNum != 0 and inputNum != 1 and inputNum != 2 and inputNum != 3:
print(“0-3の数字を入力してください”)
とか、isdigitとか例外処理とかやってみたけどpritnは表示されてももう一度数字を入力することはできません。
0-3の入力に「あ」とか「*」とか、「11」なんでも0-3以外は駄目なようにしたい。

dic = {}

while True:
print(“[0]新しい英単語を追加\n[1]英単語を検索する\n[2]登録単語を表示する\n[3]アプリを閉じる”)
inputNum = input()

if int(inputNum) == 0:
print(“単語の意味

元記事を表示

Python3のメタクラスメモ

# Python3のメタクラスメモ

Python初心者がPython3のメタクラスについて学んだことのメモ
コード内のコメントはコンソールの出力結果を意図しています。
誤りや不適正な表現があればご指摘いただけると幸いです。

## メタクラスとは
あるインスタンスがどのクラス型かを調べる場合、type()を利用することができる。

“`python
class Hoge:
pass
h = Hoge()
print(type(h))
#
“`

Hogeクラスにもtype()を適用してみる。

“`python
print(type(Hoge))
#
“`
これはHogeクラス自体がtype型のインスタンスであることを示している。hがHogeクラスのインスタンスであると同様に、Hogeクラスもまたtypeクラスのインスタンスということになる。***Python3で定義されたクラスは、typeという特殊なクラス(メタクラス)のインスタンスになる。***通常では、クラスを定義すると3つの引数を持

元記事を表示

【AmazonLinux】Python2系からPython3系への切り替え

# 環境
AMI: Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type

# コマンド

“`console
$ sudo yum install python36
$ python3 –version
$ sudo yum install git
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ emacs ~/.bash_profile
$ source ~/.bash_profile
$ sudo yum install zlib1g-dev
$ sudo yum install libssl-dev
$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel -y
$ pyenv install 3.6.8

元記事を表示

PubMedで定期的に検索したい論文情報をCSVデータとして蓄積させていくスクリプトの作成

定期的に新しい論文が無いか調べることあると思います。けど、時間があるときに不定期に調べる程度で、あれ?この論文見たっけかな?なんてこともあるかと思います。そこで定期的に調べる検索ワードで出てくる論文を一覧データとして蓄積させていくスクリプトを書きました。全くの独学でやってるので変な部分もあるかもですが悪しからずです。

#1.使用モジュール一覧。
書いてるけど、結局使ってない…なんてものも、もしかしたら混ざっているかもしれません。試行錯誤して作ったのでとりあえず、動けばいいかレベルです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481632/7eacf9aa-4dd5-8960-d1ab-548917e8ae6a.png)
#2.本日の日付をゲット。
論文情報を蓄積させていくためには、前回調査した日を記録しておく必要があります。ゼロから毎回論文情報をゲットするようなスクリプトはNCBIのサーバに高負担をかけてしまうので要注意。時間をゲットするためにはstrftimeとstrptim

元記事を表示

Python:クラスについての覚え書き1「抽象度」

#概要:部品の使い方から、組み合わせ方へ
単にプログラムの断片を利用するだけでなく、それらを組み合わせたプログラムの実装に向けて学習を進めていく。

#現状
あれがやりたい、これがやりたいというちょっとした思いつきについては、豊富なライブラリと解説のおかげで何とか実現できるようになりました。一方で、じゃあそれらを組合わせて一つのプログラムを作ろうかとなると、どうしても全体がごちゃごちゃしてしまい、やがて手がつけられなくなってしまいます。

よって、ここではクラスについて学んだことを整理し、「自分で拡張・メンテンナスできるプログラム」を作ることを目的として諸事項をまとめていきます。まだまだ初学者の枠を抜けられないプログラマーなので、アドバイスは大歓迎です。

#クラスの抽象度
###抽象度は適切に設定する
プログラムにおいて、名前付けは重要です。適当な名前をつけてしまうと理解・認識を阻害してしまいます。よって、全体がどうなっているかをしっかりと把握するためには、抽象度を状況に応じて決定しなければなりません。

###抽象度
「Python クラス 抽象度」など検索をかけると、メタクラスの

元記事を表示

フィボナッチってどーなってる?(私は分かりません)

AIACADEMYから

n = 100
a, b = 0, 1
while a < n: print(a, end=" ") # endはオプションでスペースを1ついれている処理をしていますが、空白を入れて見やすくしています。 a, b = b , a + b この答えを見ると あーー 横同士を計算して答えを書いて 次は その答えと横を計算して 答えを書いての繰り返しか。 てゆーのはわかるけど どのタイミングで 計算されたのがさっぱり分かりません。 n = 100 a, b = 0, 1 while a < n: print(a, end=" ") a, b = b , a + b printの下にいてるときは今aはなになのか bは何なのか。 上のwhileにいる時点ではaとbは何なのか。 分からん。 本当に困っています。

元記事を表示

OTHERカテゴリの最新記事