python

100 numpy exercisesの解説 51~75

100 numpy exercisesの解説 1~50 - minus9d’s diary の続きです。コードの難易度が高く、一問一問を理解するための調査量が多すぎて、この記事で完了させることができませんでした。 numpy-100/100 Numpy exercises.ipynb at master · rougier/numpy-100 · G…

100 numpy exercisesの解説 1~50

NumPyでよく使うテクニックが網羅されたnumpy-100/100 Numpy exercises.ipynb at master · rougier/numpy-100 · GitHubを一通りやってみています。以下はその途中で調べたメモ書きです。自分が知らなかった機能や、一見して理解が難しい問題に絞ってメモして…

Pythonのitertoolsでできる全列挙のまとめ

Pythonのitertoolsモジュールには、イテレーションに関する便利関数が多数用意されています。この記事では、その中でも競技プログラミングで全列挙に使える関数についてまとめます。Python 2.x, 3.xのどちらでも使えます。 Google Code JamのSmallでは全列挙…

windows 10 + cuda + chainer で corecrt.h が見つからない問題

Windowsに正式対応していないchainerをwindowsで動かす際のエラーについてメモします。 環境 Windows 10 64bit cuda 8.0 (cudnnは未導入) Python 3.5.1 64bit (Anaconda Pythonを利用) chainer 1.20.0.1 Visual Studio Community 2015 現象 GPUを利用するcha…

pythonのsplit関数を使って空白文字で分割するときの注意点

pythonのsplit関数を使うと、文字列をある文字で分割することができます。 例えば、カンマで文字列を分割するには以下のようにします。 s = "a,b,c" print(s.split(',')) # ['a', 'b', 'c'] s.split()とs.split(' ')は同じ出力となると勘違いしていましたが…

Python 3で絵文字を羅列する

Python3を使って、Unicodeに登録された絵文字を羅列して遊んでみました。この記事ではPython 3でのみ動作確認をしています。 コードポイントから文字への変換 Pythonの組み込み関数であるchr()を使うと、Unicodeのコードポイント(日本語では符号点)から文…

Pythonの例外処理に関するまとめ

適当に書いてしまいがちな例外処理について自分なりにまとめました。 Pythonにおける例外 Pythonでは「認可をとるより許しを請う方が容易 (easier to ask for forgiveness than permission)」、略してEAFPというコーディングスタイルが推奨されています。EAF…

Pythonのvars()とdir()の違い

よくどっちがどっちだったか混乱してしまうので自分用にまとめます。最初に、引数にオブジェクトを渡して呼び出したときの挙動を比較したのち、引数なしで呼び出したときの挙動を比較します。 vars(obj) 2. 組み込み関数 — Python 3.5.2 ドキュメントによる…

PyCharmでエディタの文字サイズをCtrl + マウスホイールで変更可能にする

表題のようにする方法が PyCharm 2016.1 Help :: Zooming in the Editor にあります。 File -> Settings...と辿ってウィンドウを開いた後、左側のペインでEditor -> Generalと辿り、"Change font size (Zoom) with Ctrl+MouseWheel"にチェックを付ければOKで…

pythonでwithによるネストを防ぐ

Pythonではファイルを開くときなどにwithを使うのが定石である(参考:ファイル - Dive Into Python 3 日本語版)。しかし、複数のファイルを開くときには以下のようにネストが発生してしまうのが気に入らなかった。 with open('a.txt', 'w') as f1: with op…

PyInstallerでPythonスクリプトをexe化

PythonスクリプトをWindowsのexeにする方法 (調査中) - minus9d's diary にて、Python 3.5のスクリプトをWindowsのexe化するにはPyInstallerが良さそうだという記事を書きました。この記事ではPyInstallerを使ってexe化する方法について調査した結果を記しま…

PythonスクリプトをWindowsのexeにする方法 (調査中)

表題の方法について調べてみました。Python 3.5で動かすことが目標なのですが、ハマっていてまだ動いていません。以下、調査した内容のメモです。 py2exeを使う方法 py2exeは、Python 2系とPython 3系とで配布場所が異なります。 Python 2系の場合、py2exe d…

Python3では変数名に日本語が使える

Fluent Python - O'Reilly Mediaを読んでてびっくりしたのでメモ。Python 3では変数名にアスキー文字以外も使えます。例えば # -*- coding: utf-8 -*- def 階乗(整数): if 整数 <= 0: return 1 else: return 整数 * 階乗(整数-1) print(階乗(5)) は問題なく…

matplotlibで軸の値が小数になったりオフセット表現になったりするのを止める方法

問題 pythonのmatplotlibで、年ごとの値の変化を表す折れ線グラフを書こうとして以下のコードを書きました。 import numpy as np import matplotlib.pyplot as plt x = np.array([2006, 2007, 2008]) y = np.array([35.2, 27.4, 41.2]) plt.plot(x, y) plt.s…

matplotlibをオブジェクト指向スタイルで使う その2

前にmatplotlibをオブジェクト指向スタイルで使う - minus9d's diaryという記事を書きました。しかし、matplotlib によるデータ可視化の方法 (1) - Qiita および Why do many examples use "fig, ax = plt.subplots()" in Matplotlib/pyplot/python - Stack …

Anacondaのcondaコマンドによる仮想環境の使い方のまとめ

Pythonパッケージ集として人気のあるAnacondaに付属するcondaコマンドを使って、クリーンなPython環境を作ったり破棄したりする方法についてまとめました。 環境を作る myenvという名前のpython環境を作ってみましょう。 $ conda create --name myenv python…

Pythonの関数のデフォルト値にリストなどを使うときは要注意

Pythonの関数には、他の多くの言語と同じく、引数のデフォルト値を指定する機能があります。 例えば以下の関数に引数を一つのみ与えたときは、bには3の値が入ります。 def func1(a, b = 3): return a + b このデフォルト値に、リスト、辞書などの可変オブジ…

Pythonでインスタンスの状態をダンプするにはvars()を使う

以下のような、インスタンス変数としてval1とval2を持つMyClassというクラスを考えます。 class MyClass: def __init__(self, val1, val2): self.val1 = val1 self.val2 = val2 以下のように、このクラスのインスタンスを作り、printしてみます。 mc = MyCla…

shift_jisでUnicodeDecodeErrorが出る場合は、shift_jisx0213でデコードしてみる

(2019-03-30追記) Windows の文字コードは Python では cp932 - criticablog によると shift_jisx0213 ではなく cp932 を使うべきだそうです。以下の記事は2015-07-30に投稿したものそのままです。 あるウェブページを、Python 3で以下のように読み込もうと…

Pythonで、文字列に日本語が含まれているか判定する

表題のことをPythonで行おうとあれこれ検索しましたが、なかなかこれだという方法が見つかっていません。 今のところ、Is there a way to know whether a Unicode string contains any Chinese/Japanese character in Python? - Stack Overflowで紹介されて…

Python3で、urllibとBeautifulSoupを使ってWebページを読み込む

Python3で、urllibとBeautifulSoupを使ってWebページを読み込む方法についてまとめます。 urllibを使ったページの取得 まず、Python3の標準ライブラリであるurllibを使ってページを取得します。Python2から書き方が変わっているので注意が必要です。 import …

Anacondaの本体とパッケージ一式のアップデート方法

本体のアップデート コンソールから conda update conda と打つ。 パッケージ一式のアップデート コンソールから conda update --all と打つ。アップデートされるパッケージの一覧が表示されるので、問題なければyと打ちReturn。 Pythonのバージョンのアップ…

SymPyで数式と戯れる

数式を扱うPythonのライブラリであるSymPyを触っています。できることが多くてなかなか面白いです。以下、導入メモです。 ブラウザでとりあえず試す SymPy Liveで試せます。適当に >>> x ** 2 - 3 * y ** 2 などと打つと、LaTeXのきれいな数式で表示されて驚…

Pythonのライブラリのソースコードの場所を調べる

Python Library Source Code: how can I view it? - Stack Overflowに方法が載っていました。いろいろ方法はあるようですが、もっとも簡単なのは import random print(random) でしょうか。

scikit-learnのSVMを使って多クラス分類を試す

Pythonのscikit-learnを勉強中です。今回は、公式ページにある、手書き文字を0から9に分類するコード (Recognizing hand-written digits — scikit-learn 0.16.1 documentation) を読み解いてみます。 準備 Python 3でscikit-learnを使えるようにします。今回…

Pythonパッケージ集の比較

Pythonの科学技術計算でよく使うライブラリを一挙にインストールできるパッケージ集を比較しました。 比較対象 Download Anaconda Python Distribution Python Distribution and Integrated Analysis Environment | Enthought Canopy pythonxy - Scientific-…

Python 3でfunctools.lru_cacheを使って簡単にメモ化再帰

Google Code Jamの公式解説 Dashboard - Round 1B 2014 - Google Code Jamを読んでいて、Python 3には簡単にメモ化再帰する機能が標準ライブラリに含まれていることを知りました。以下、簡単な解説です。 フィボナッチ数を求める再帰関数 お題として、n番目…

PyQt5で、Yahoo! 形態素解析の結果を表示するアプリを作成

PyQt5の練習の続き。もう少し実用的な例として、Yahoo! 形態素解析の結果をWebを通じて取得し、テーブルに表示するアプリを作成しました。 実験環境 Win7 Pro + Python 3.4.3 + PyQt5 アプリのスクリーンショット 最上部には、ご利用ガイド - Yahoo!デベロッ…

PyQtで100個のスライダーを並べる

PythonのGUIツールキット PythonでGUIアプリを作るためのライブラリを調べました。QtのPythonバインディングとしてはPyQtとPySideが有名なようです。特徴を比較すると以下のようになります。 ツールキット 開発元 ライセンス 備考 PyQt4 Riverbank Computing…

Pythonで (-N//2) と (0-N//2) は同じにならない

Be careful: (-N//2) and (0-N//2) を見ていて混乱した話です。 問題のコードを実行 まず、上記リンクで話題になっているコードを動かしてみます。 N = 99 print(-N//2) print(0-N//2) をPython 2またはPython 3で実行すると、以下の結果が出力されます。 -5…