俺言語。

自分にしか理解できない言語で書かれた備忘録

【Python】Anacondaよく使うコマンドと操作

  • 仮想環境の一覧
conda info --envs
  • 仮想環境のactivate
conda activate conda_addpackage1
  • ローカルにダウンロードしたcondaパッケージのインストール
conda install C:\Users\*****\AppData\Local\conda\conda\pkgs\***.tar.gz2
  • インストールされたパッケージの確認
conda list

【Python】複数のndarray行列からよく使うm×n配列のndarrayを作成する(縦軸:時系列データ, 横軸:データ種類)

時系列データと時間を格納した行列があるとして
それから1つの配列を作成する方法
f:id:hukkuramamemoti:20181227122538p:plain

# データ準備
Time = np.array([0, 1, 2, 3....])
a = np.array([0, 1.1, 2.5, 3....])
b = np.array([0.5068, 0.840, 0.4075, 0.8574....])

# m×nの配列作成
matrix = np.concatenate((time.reshape(len(time), 1),
                                         a.reshape(len(a), 1),
                                         b.reshape(len(b), 1)),
                                         axis=1)

>>array([[ 0.    ,  0.    ,  0.5068],
       [ 1.    ,  1.1   ,  0.84  ],
       [ 2.    ,  2.5   ,  0.4075],
       [ 3.    ,  3.    ,  0.8574]])

ポイントは

  • reshapeを使ってn×1配列に変換すること(n×1配列とn行列はnumpyでは振る舞いが異なるので注意)と
  • concatenateでaxis=1にすること。
  • concatenateのデータはタプルでまとめること(カッコを忘れずに)

【Python】別バージョンのPythonをvirtualenvを使ってインストール

自分のプログラムをexe化して別のマシンで走らせようとしたところ,
そのマシンが32bitであると判明。(自分は64bit)
他にも方法がありそうだけど32bitのpythonをvirtualenvを使ってインストール。

  • インストール

pipから可能

pip install virtualenv
  • 仮想環境をつくる。pythonは32bit版
  1. 先にpython32bitを公式サイト等からインストールしておく
  1. コンソール(コマンドプロンプト)から下記を叩く。今回は”py32bit”で作成
> virtualenv py32bit --python=C:\Python34\python.exe

これで仮想環境が32bitで作られる。

  • 仮想環境をアクティブにする

コンソールからアクティブにするディレクトリ(py32bit)に移動して
下記をタイプ。
仮想環境はワークスペース下にあり。

> cd \py32bit
> Scripts\activate
> 
>(py32bit)... #これが出れば成功
||< 

- 仮想環境を抜ける(Deactivate)
>|pythob|
>deactivate 

【Python】matplotlibで作成したグラフをpdfで保存しようとしたら'Can only output finite numbers in PDf'っていうエラー

題記の通り。

原因はlogグラフ上にtextで値を表示するところで

x=0の位置に表示させるようになってしまっていた。

(xの位置はグラフの最大値の様な位置を検出して自動的に反映させるようにしていたのだけども
検出時にエラーが出た際には最大値のインデックスをゼロで返すようになっていたことが原因。。)

logのグラフでよく起こるエラーらしいので注意。
f:id:hukkuramamemoti:20180415232901p:plain

【Python】エクセル用ライブラリの特徴まとめ

Pythonでエクセルを扱う際,いろいろなライブラリがあって

更にどれも一長一短があるので簡単にまとめ。

これだけで全部賄えるが無いのが残念。

  • xlwt,xlrd

良い所 :もっともメジャー?
ダメな所:xlwtが新規作成のみで上書きに対応していない。
      →xlutilsで上書きが可能。どうせなら一つのライブラリにして!
     各ライブラリで微妙に操作感が違う。
      → シートのオブジェクトを指定する場合
       xlrd->wb.sheet_by_name(シート名)
       xlwt->wb.get_sheet(シート名)
     xlsxの読み込みは対応だが書き込み未対応。

  • openpyxl

良い所:xlrd,xlwt連合のだめな点はほぼ出来る。
    操作も分かり易い

ダメな所:xlsの読み書きに対応していない

こちらの方がもっと分かり易かったのでリンクを貼らせていただく。
感謝!
myfuturesightforpast.blogspot.jp