俺言語。

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

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

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

  • インストール

pipから可能

pip install virtualenv
  • 仮想環境をつくる。pythonは32bit版
  1. 先にpython32bitを公式サイト等からインストールしておく
  1. コンソール(コマンドプロンプト)から下記を叩く
> virtualenv (仮想環境名) --python=(32bit pythonのパス)

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

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

コンソールから下記をタイプ

> (仮想環境名)\

【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

【Pycharm】アップデート後にPythonクラッシュ多発2

遅まきながらPycharmを2017.3.2をアップデートしたところ,
Runは問題ないのにdebugで
Process finished with exit code -1073741819 (0xC0000005)
と出て強制終了するエラーが発生。

print文だけの超シンプルなスクリプトでもエラーが出てdebug出来なかったため,
前回とは異なる模様↓oregengo.hatenablog.com

文字は読めないけどPyQtがどうのこうのというサイトを発見。
そういえばPyQtは4のままで5は入れていないような気が。

もともとはAutoになっていたところをPyQt4に変更したところ治った!
f:id:hukkuramamemoti:20180118185120p:plain

まー原因はよくわかんねけどいいか。

【Android】Pythonのnp.delete(arr, range(2))相当な書き方

Pythonでndarrayをある範囲を削除する方法

arr = np.array([1, 2, 3, 4])
np.delete(arr, range(2))
> array([3, 4])

Javaではこんな感じで書くみたい。

// arrはArrayList
arr.subList(0, 2).clear();

【Android】Pythonのnp.zeros相当な書き方

Python

np.zeros(10)
>array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

と書ける物は以下のようにするといいみたい。

Integer [] arr = new Integer[10];
ArrayList<Integer> myList= new ArrayList<>(Arrays.asList(arr));
Collections.fill(myList, 0);//fills all 10 entries with 0