計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

numpy.deleteで行や列を削除

定義

numpy.delete(arr, obj, axis=None)

  • arrはnumpyの配列(array_like)
  • objに削除したいインデックスなどを入れる
  • axisで削除する方向を決める。行とか列とか

一部を削除したnumpyの配列を新しく返す。元のarrはそのままで変わらない

使い方

numpy配列の例

3行目のaはjupyterやipythonでaを出力させるためのもの

import numpy as np
a= np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
a
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

行を削除

行というか、1次元配列ならそのまま指定したインデックスを削除。2次元配列なら行を削除。axis=0を使う。

np.delete(a, 0, 0)
array([[4, 5, 6],
       [7, 8, 9]])

インデックスはリストで複数指定できる

np.delete(a, [0, 1], 0)
array([[7, 8, 9]])

列を削除

axis = 1を使う。2次元以上じゃないとエラーが出る

np.delete(a, 0, 1)
array([[2, 3],
       [5, 6],
       [8, 9]])

 注意点

axisをちゃんと指定しないとややこしいことになるので注意。

1次元の場合は問題ない

b = [1, 2, 3, 4, 5, 6, 7, 8, 9]
b = np.array(b)
b
array([1, 2, 3, 4, 5, 6, 7, 8, 9])

想像通りに削除できる

np.delete(b, 0)
array([2, 3, 4, 5, 6, 7, 8, 9])

2次元だと思い描いた通りにならない。
axisはデフォルトでNoneであり、Noneだとflattened arrayが返されてしまう。第3引数を忘れてはいけない。

a
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
np.delete(a, 0)
array([2, 3, 4, 5, 6, 7, 8, 9])

Ubuntu 16.04 LTSをインストールした後にやったことまとめ

目次

ソフトウェア更新

Ubuntu Softwareで更新するだけ。ついでにEmacsもインストールするといい。

時計の表示方法

右上の時刻のところで右クリック。月日曜日とかも表示させる

入力メソッドのオンオフのホットキーの設定

右上のキーボードマークを右クリックして設定。 入力メソッドのオンオフのところのCtrl+Spaceを他のものに変更。 Emacsキーバインドとかぶる。 2つあるが両方共Zenkakuhankakuとかにしておく

lm-sensorsのインストール

端末から

$ sudo apt-get install lm-sensors

このコマンドでCPU温度がわかる

$ sensors

システム負荷インジケーターのインストール

cpuとかメモリなどの使用率を表示させる。Ubuntu Softwareでインストールできる。 「システム」や「負荷」で検索してもだめだった。「indicator」でいける。英語だけ?

一旦起動させて、右上のところに出てきたら右クリックして設定。いろいろ表示させておく。

chromeのインストール

firefoxを使ってchrome公式サイトからダウンロード。ubuntu用のものがあるので簡単。

Thunderbirdの設定

ここを参照

Thunderbirdの設定(Gmail + IMAP) - 計算物理屋の研究備忘録

デスクトップなどの日本語ディレクトリ名を英語に変更

端末から

$ env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update

有効にするには一旦ログアウト

ターミナル環境の構築

プロファイルの編集

端末 --> 編集 --> プロファイルの設定
ウィンドウサイズとか色とか適当に変えておく

zshのインストールしてシェルをzshへ変更

端末から

$ sudo apt-get install zsh
$ sudo chsh
/bin/zsh

有効にするには一旦ログアウト

gitのインストール

端末から

$ sudo apt-get install git

pecoのインストール

バイナリをダウンロードしてくるだけ。

github.com

peco_linux_amd64.tar.gzをダウンロード

Rictyをインストール

プログラミング向きの見やすいフォント、Rictyをインストールする。 この公式サイト通りにやればよい

プログラミング用フォント Ricty

端末から

$ sudo apt-get install fontforge
$ sudo apt-get install fonts-inconsolata
$ sudo apt-get install fonts-migmix

上記公式からricty_generator.shをダウンロードして

$ chmod 744 ./ricty_generator.sh
$ ./ricty_generator.sh auto

インストールしたら
端末 --> 編集 --> プロファイルの設定 でRictyを選んでおく。13.5pt
13.5は全角と半角がちょうど2:1らしい。大きさ的にもとりあえずこれくらいで。 Ubuntu 14.04 LTSのときはこれでフォントを変更できなくてコマンドを打つ必要があったが、16.04 LTSではGUIでマウスでポチポチすればOK。

sshの設定

いろいろ接続できるようにしておく。

keisanbutsuriya.hateblo.jp

普段使っている~/.ssh/configもコピーしておく

自分用の設定ファイルをクローン

$ git clone ユーザー名@ホスト名:repository/dotfiles.git .dotfiles

必要な設定をする。

Emacs

package.el

普段使っているパッケージをインストールする

keisanbutsuriya.hateblo.jp

auto-completeのfortran辞書だけコピーしておく

設定ファイルの同期

上記のようにgitで設定ファイルをまとめてあるので、設定はほぼ終わっている

cmigemoのインストール

端末から

$ sudo apt-get install cmigemo

python環境の構築

pyenvを使ってpython環境を構築する

keisanbutsuriya.hateblo.jp

Emacsのjediの設定もやっておく

keisanbutsuriya.hateblo.jp

TeX環境の構築

Tex Liveをapt-getでいれる。texlive-fullを入れれば全部入るが、めんどいので日本語関係のものとフォントを入れておく。texlive-lang-cjkを入れれば基本的なものはインストールされる。

$ sudo apt-get install texlive-lang-cjk
$ sudo apt-get install texlive-fonts-extra
$ sudo apt-get install texlive-fonts-recommended

tlmgrを使うにはxzdecもインストールする必要があるらしいが、今までtlmgrを使ったことがないのでとりあえず放置。

JabRefのインストール

Ubuntu Softwareからインストールするだけ

oracle Java (JRE)のインストール

oraclejavaはレポジトリを追加してからapt-getでインストールできる

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer

端末からJavaコントロール・パネルを開いて設定する

$ jcontrol

これでGUIが立ち上がって設定できる。
セキュリティタブの例外サイト・リストに使用するURLを登録しておく

データ保存用HDDのマウント

HDDやUSBメモリはつなぐだけで自動的にマウントされるが、一時的なマウント場所は/media/以下になる。内蔵HDDなのできちんと/mnt/以下にマウントしておく。

フォーマット

Ubuntu14.04 LTSのデータが入っていたのでフォーマットする。自動的にマウントされていてランチャーにあるので右クリックしてフォーマット。この時にわかりやすい識別名をつけておく。もともとExt4なのでクイックフォーマットで一瞬で終わる。

マウントの設定

CUIなら/etc/fstabを編集することになるのだが、UbuntuGUIでできるの楽。Dashから「disk」で検索かけて「ディスク」というアプリケーションを起動。HDDを選んで小さな歯車のアイコンをクリックして「マウントオプションの編集」をクリック。

自動マウントオプションをオフ。デフォルトではマウントオプションや識別名がUUIDになっていてわかりづらいので識別名をLABEL=xxxxxxに変更する。そうすると自動的にマウントオプションも/mnt/xxxxxxに変わる。これでOKをクリックしてパスワードを入力して設定終了。

歯車アイコンの2つ隣の■みたいなやつをクリックして一旦アンマウント、再生ボタンみたいなのを押してマウントし直すとちゃんと/mnt/以下にくる。

MacのEmacsでフルスクリーンにする方法

この方法(Macに最新バージョンのEmacsをインストール - 計算物理屋の研究備忘録)でMacに入れたEmacsでは 左上の緑のボタンを押してもフルスクリーンになってくれない。

Emacsをフルスクリーンにする簡単な方法はEmacsで直接下記コマンドを実行する

M-x toggle-frame-fullscreen

長いのでコマンドは覚えられないが、helmを使っていればfullscreenで出てくるのでぱぱっと切り替えられる。 f11キーがこのコマンドに割り当てられているが、f11を押しても効かなかった。LinuxMacは違うっぽい。

UbuntuでJavaコントロール・パネルを開く方法

javaをインストールしてコントロール・パネルというものを開いて設定したかったのだけれど

なかなか起動のしかたがわからなくて、調べたらなんとか見つかったのでメモ。

ターミナルで次のコマンドを打つだけ

$ jcontrol

Macでたまに使うショートカットのメモ

たまに使うけどコマンドはよく覚えていないのでメモっておく
OS X El Capitan ver. 10.11.5

コマンド 説明
control + option + space 次の入力ソース選択
(入力ソースがUSで) shift + option + a Åの入力

Seabornの色見本

Seabornのメモ

前々回:Seabornのスタイル見本 - 計算物理屋の研究備忘録
前回:Seabornのコンテキスト見本 - 計算物理屋の研究備忘録

グラフも前回のものを使う

カラーパレット

公式サイトのチュートリアルを参考

Choosing color palettes — seaborn 0.7.1 documentation

Seabornでは、Seabornで用意されているカラーパレットとか、matplotlibのカラーマップ?とかいろいろ使える。

Seabornのカラーパレット

Qualitative (or categorical) palettes が6個用意されている。色で見分けやすいカラーマップ。ただし6色まで。

  • deep
  • muted
  • pastel
  • bright
  • dark
  • colorblind

使い方はplot前にsns.set_palette('deep')みたいにするだけ。

import seaborn as sns
sns.set_palette('deep')    # デフォルト
#sns.set_palette('muted')
#sns.set_palette('pastel')
#sns.set_palette('bright')
#sns.set_palette('dark')
#sns.set_palette('colorblind')
sinplot()    # 関数はすでに定義済みとして

Qualitative palettes一覧

deep muted
f:id:keisanbutsuriya:20160601014037p:plain:w300 f:id:keisanbutsuriya:20160607013512p:plain:w300
pastel bright
f:id:keisanbutsuriya:20160607013905p:plain:w300 f:id:keisanbutsuriya:20160607014011p:plain:w300
dark colorblind
f:id:keisanbutsuriya:20160607014342p:plain:w300 f:id:keisanbutsuriya:20160607014351p:plain:w300

他にもcircular color systemsというのに、hlsとhuslというものがある。これは数字を指定することで6色以上使える。

6本以上線を書くための簡単な関数をつくってプロットしてみる。
12本線を引いて、12色使うようにしてみた

def axb():
    x = np.linspace(0, 10, 100)
    for i in np.linspace(0, 5, 12):
        plt.plot(x, x+i)

sns.set_palette('hls', 12)
#sns.set_palette('husl', 12)
axb()

hlsとhusl

hls husl
f:id:keisanbutsuriya:20160607015406p:plain:w300 f:id:keisanbutsuriya:20160607015419p:plain:w300

matplotlibのカラーマップ

matploblitのカラーマップはここに色々載っている

color example code: colormaps_reference.py — Matplotlib 1.5.1 documentation

たとえば、matplotlibのSequential colormapsのBluesをSeabornではこのように使う

sns.set_palette('Blues', 12)  # 12色
axb()
Blues
f:id:keisanbutsuriya:20160607020557p:plain:w300

他にも例えば、Set1なんかは9色まで使えてある程度色が判別しやすい。

sns.set_palette('Set1', 12)    # 9色で一回りしてしまう
axb()
Set1
f:id:keisanbutsuriya:20160607022319p:plain:w300

sns.light_palette と sns.dark_palette

色の名前を指定して、その色を基本とするsequential palettesを作成できる。明るいのがlight_paletteで、暗いのがdark_palette。

sns.light_palette()で作成したパレットをsns.set_palette()に入れて使う感じ
ここで使っているgreenはカラーパレットじゃなく、ただの色の名前。

sns.set_palette(sns.light_palette('green', 12))
#sns.set_palette(sns.dark_palette('green', 12))
axb()
light_palette dark_palette
f:id:keisanbutsuriya:20160607021519p:plain:w300 f:id:keisanbutsuriya:20160607021533p:plain:w300

Seabornのコンテキスト見本

Seabornのメモ

前回:Seabornのスタイル見本 - 計算物理屋の研究備忘録
次回:Seabornの色見本 - 計算物理屋の研究備忘録

コンテキスト

公式サイトのチュートリアルを参考

Controlling figure aesthetics — seaborn 0.7.1 documentation

4つのコンテキストが用意されていて。これも1行書くだけで適用できる。グラフのサイズや文字との比率などが変わる。用意されているのはこの4つ。下に行くほどサイズがでかくなる

  • paper
  • notebook # デフォルト
  • talk
  • poster

前回と同じグラフを使う。importとかplotする関数は用意してあるものとして

使い方

#sns.set_context("paper")
sns.set_context("notebook")    # デフォルト
#sns.set_context("talk")
#sns.set_context("poster")
sinplot()

コンテキスト一覧

paper notebook
f:id:keisanbutsuriya:20160601231055p:plain:w300 f:id:keisanbutsuriya:20160601014037p:plain:w300
talk poster
f:id:keisanbutsuriya:20160601231235p:plain:w300 f:id:keisanbutsuriya:20160601231203p:plain:w300

ブログ上の表示では大きさが変わるのでわかりにくい。クリックかダウンロードして見てみると違いがわかるはず。

paperやデフォルトのnotebookでは文字が小さくて見づらいので使う場合は文字だけ大きくしたほうがいい。

フォントスケール

font_scale=でフォントの大きさを調整できる。この例だと1.5倍される。rc={ }で他のパラメータも調整できる。

sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 2.5})
sinplot()

f:id:keisanbutsuriya:20160601231927p:plain