pythonでcsvを読む方法 - 標準ライブラリ, pandas, numpy

pythonでcsvを読み込む方法についてまとめました。ライブラリによって微妙に読み込み方が異なるので大変です。 この記事では、以下のdata.csvを読み込む場合を考えます。最初の行がヘッダ行で、それ以降の行がデータ行です。 a,b,c 2,5.6,1 1,7.0,0 3,6.2,1 …

Emacsに入ってる人工無脳ELIZAと対話する

AlphaGo | Google DeepMindと人類の戦いが最高潮なのにかこつけて、人工知能ネタを紹介します。 EmacsにELIZA(イライザ)と呼ばれる、簡素な対話プログラムが入っているのはご存知でしょうか? ELIZAはJoseph Weizenbaumによって1964から1966年に書かれたプ…

2016年センター試験英語(筆記)を解く

英語力の定点観測のために、今年のセンター試験英語(筆記)を解いてみました。結果からいうと183点で、期待よりも低い値でした。 以下、間違えた部分を中心としたメモです。ネタバレしてます。 第1問 B-3. charity, continent, demonstrate, opponentでアク…

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

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

VirtualBOX + Ubuntuの環境構築メモ

Windows 10 + VirtualBOX + Ubuntuを動かすときのメモです。適宜更新します。 Ubuntuの仮想イメージを取得 Ubuntuの入手 | Ubuntu Japanese Teamから「日本語 Remix 仮想ハードディスクイメージのダウンロード 」をクリックして「Ubuntu 14.04 LTS」を入手し…

C言語でOpaqueポインタを使って構造体のメンバを隠蔽する

C

C言語で、自作の構造体のメンバをユーザに開示しないテクニックとして、Opaqueポインタというものが知られています。今回は、書籍「C++のためのAPIデザイン」の3.1.6節を参考に、Opaqueポインタを使う簡単なサンプルを紹介します。 Opaqueポインタを使わない…

メインPCをWindows 10にUpgradeした記録

自宅でメインPCとして5年以上使っているDell XPS 8100をWindows 7からWindows 10にアップグレードしました。大多数のアプリは問題なく動いており、おおむね満足です。 このエントリでは、アップグレードにまつわる記録を記します。 アップグレードできなかっ…

Travis CI にて、C++11のソースをgccとclangの両方でビルドする

githubのレポジトリと簡単に連携できる継続的インテグレーションサービスであるTravis CIを使って、C++11で書かれたソースコードをテストできるようにしました。想像以上に大変だったのでメモしておきます。 ソースコードとテストコードの準備 Travis CIで提…

makeで大量のメッセージが表示されるときは-dオプションを疑う もしくは変数展開についてのbash/zshの違い

ある私的プロジェクトでMakefileの変数$(CXXFLAGS)を変更して実行するために、以下のようなスクリプト script.sh CXXFLAGS="-std=c++0x -stdlib=libc++" make CXXFLAGS=${CXXFLAGS} を書きました。このスクリプトの意図は、Makefileに記されたCXXFLAGSという…

cmathをincludeするとy0, y1などのグローバル変数が使えなくなる問題

C++

一見問題なさそうな以下のコード #include <cmath> int x1, y1; int main() { x1 = 10; y1 = 5; return 0; } を、例えばVisual C++ 2015でコンパイルしようとすると、以下のエラーが出て失敗します。 main.cpp(3): error C2365: 'y1': redefinition; previous defin</cmath>…

Visual Studio 2015起動時の"License: Prerelease software This license has expired"問題の解決策

Visual Studio 2015を起動すると、"License: Prerelease software This license has expired"というエラーメッセージが出て、開始できない問題に遭遇しました。 Visual Studio 2015 - Prerelease software. This license has expired - Stack Overflow にあ…

ScanSnap S1300iで読み込むJPEGの画像サイズと品質

FUJITSU ScanSnap S1300i FI-S1300A で本格的にスキャンをするにあたり、画像の圧縮率を1(低圧縮)から5(高圧縮)まで変化させると、画像サイズと品質がどう変化するかを調べました。 実験環境 スキャン対象 A4のカラー写真を含む紙片面 主な設定 読み取りモー…

Modern C++でのクラスに関する私的メモ

C++

C++のクラスについて理解があやふやなので、調べたことを以下にまとめます。C++11以降をターゲットにしています。 特殊メンバ関数 (Special member functions) 以下に、メンバ変数を2つとメンバ関数を1つのみ持つ単純なクラスを含むサンプルを示します。 #in…

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

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

Nexus 5 + iijmioの組み合わせが不調のときに調べること

Nexus 5 + iijmioの組み合わせで通信が不調になることが何回かありました。この記事ではその解決策をまとめます。 Android 5.xにて通信が不安定になる問題 Androidを4から5に上げた後、アンテナマークにビックリマークが付いた状態になり通信できなくなるこ…

CMakeをコマンドラインから使う方法の簡単なまとめ

CMakeという、多様なプラットフォームでソースコードをビルドするためのツールの使い方を勉強中です。この記事では、CMake向けに構築されたソースコードを、Linuxなどのコマンドラインからビルドする方法についてまとめます。 ビルドの基本 まず、buildを行…

VistaのWindows Updateが働かない不具合を修正

約3ヶ月起動していないVistaを起動してWindows Updateをかけたところ、「更新プログラムを確認できません」というエラーとともに、更新に失敗する不具合が出ました。 「"Windows Update で更新プログラムを確認できません" エラー メッセージが更新プログラ…

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でデコードしてみる

あるウェブページを、Python 3で以下のように読み込もうとしました。 import bs4 import urllib.request def get_soup(url): rawtext = urllib.request.urlopen(url).read() soup = bs4.BeautifulSoup(rawtext.decode('shift_jis')) get_soup('http://xxxxx'…

linuxで連番を生成するにはseqコマンドが便利

linuxのシェルコマンドであるseqを使うと簡単に連番を生成できることを知りました。 まずは5から12までの連番を作ってみます。 $ seq 5 12 のように、最初の数字と最後の数字をそれぞれ指定すると、以下のように表示されます。 5 6 7 8 9 10 11 12 次に、5か…

Windows 7とNexus 5が接続できない現象の解決策

症状 Windows 7とNexus 5をUSBケーブルで接続しても、Android Studioからrunning deviceとしてNexus 5が認識されない。 解決法 usb driverがインストールできない - Google プロダクト フォーラム で直りました。 以下に方法を引用します。 (PCに繋がってい…

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

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

Googleマイマップでぐるっとパスの施設一覧地図を作る

新Googleマップの「マイマップ」で地図作成&スマホで表示する方法|Mac - 週アスPLUSを参考に、表題の地図を作成しました。 地図を作成するときには以下のようなExcelファイルを作成する必要がありますが、どこにもスクレイピングできるページがなく、仕方…

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のきれいな数式で表示されて驚…

Cygwinからコマンドプロンプトのウィンドウを開く

以下のコマンドを打ち込めばOK. $ cygstart cmd 参考:Linda Walsh - Re: Launching CMD.EXE windows from cygwin bash (answer found)

gdbでvectorなどの中身をprintする

C++

gdbでvectorなどSTLのコンテナの中身をprintしようとすると、例えば以下のようにうまく表示できません。 (gdb) p x1 $1 = {<std::_Vector_base<int, std::allocator<int> >> = { _M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, _M_start = 0x8003b9e8, _M_finish = 0x8003b9fc, _M_end_of_storage …</no></no></__gnu_cxx::new_allocator<int></std::allocator<int></std::_vector_base<int,>

C++11で、std::tie()を使って複数の変数への代入を1行で行う

C++

スクリプト言語だと、複数の変数への代入を1行で行えることが多いです。以下はPythonの例。 a,b,c = 10, 7.7, "hello" print(a,b,c) これと同じことをC++11でも行うには、std::tie()を使います。 #include <iostream> #include <tuple> using namespace std; int main(){ int </tuple></iostream>…

重複組合せの復習

例えば「区別のないK個の玉を、区別のあるN人に分配する組み合わせ」のように、区別のないものを区別のあるものに分配する組み合わせを重複組合せと呼びます。 重複組合せは以下の記号で定義されます。 重複組合せは、を使って以下のように表せることが知ら…