投稿

ラベル(python)が付いた投稿を表示しています

【python】MacのPython環境構築:Miniconda + Jupyter Notebook + タブ折りたたみ機能インストール

イメージ
個人的なログ。 古いMacが低容量なのでAnacondaをアンインストールしてMinicondaを入れる。 環境:MacOS Monterey 12.7.6 Minicondaインストール 公式ページ https://docs.anaconda.com/miniconda/ からminicondaをインストール。 Notebookインストール ■ 失敗した方法:pipを使う→バージョン管理失敗 ターミナルから $ pip install jupyter notebook $ pip install jupyter-contrib-nbextensions $ jupyter contrib nbextension install --user これだけだと最後のコマンド実行時に ModuleNotFoundError: No module named 'notebook.nbextensions' ... エラーが出たので このページ を参考にバージョンの調整 $ pip install --upgrade notebook==6.4.12 $ pip uninstall traitlets $ pip install traitlets==5.9.0 $ pip uninstall ipython $ pip install ipython==8.9.0 この時点でNotebook起動するとNbextensionsタブが開かない ターミナルの方ではnbextensions tornado.web.HTTPError: HTTP 403: Forbiddenが繰り返し出ている。 ipython-kernelのバージョンを下げてみると良いという記事もあったが、ここで「condaあるのにpip使うからでは」となったのでやめた。 一回pipで入れた方はアンインストールする。 $ pip uninstall jupyter notebook ■ 成功した方法①:condaを使う $ conda install -c conda-forge notebook $ conda install -c conda-forge jupyter_contrib_nbextensions $ jupyter contrib nbextension install -...

【python】scikit-imageライブラリインストールメモ

イメージ
この記事を書いた時点:2021/9/29 pythonバージョン:3.8.8 -------------------------------------------------- python2.7でscikit-imageをインストールしようとすると、もうサポートが切れたからか ERROR: Could not find a version that satisfies the requirement scikit-image (from versions: none) ERROR: No matching distribution found for scikit-image とエラーを吐くので、anacondaをDLしてきてpython3の環境を作った。 anacondaでscikit-imageをインストールしようとしたとき、 $ conda install scikit-image として、いざ $ import skimage をすると python: symbol lookup error: /home/username/anaconda3/lib/python3.8/site-packages/mkl/../../../libmkl_intel_thread.so.1: undefined symbol: omp_get_num_procs などとエラーを吐く。 このページ を参考に $ conda install --channel conda-forge llvm-openmp としたところ解決した。

【データ受け渡し】Pythonで出力したバイナリーデータをC言語で読み込む

イメージ
いつも忘れるのでメモ。 C言語からPython ver. は こちら 。 例えばPython側で import numpy as np f = open("test.dat","wb") for i in range(2):     a = np.array([979517696]).astype("i8")     f.write(a.tobytes())     a = np.array([5]).astype("f8")     f.write(a.tobytes())     a = np.array([10]).astype("i4")     f.write(a.tobytes()) f.close() のように出力したら、C言語側で #include <stdio.h> int main(int argc, char **argv) {         double d;         long long l;         int i;         FILE *file;         char* fname="test.dat";         file = fopen(fname,"rb");         fread(&l,sizeof(l),1,file);         printf("%lld\n", l);         fread(&d,sizeof(d),1,file);         printf("%f\n", d);         fread(&i,sizeof(i),1,file);     ...

【データ受け渡し】C言語で出力したバイナリーデータをPythonで読み込む

イメージ
いつも忘れるのでメモ。 PythonからC言語ver. は こちら 。 単純な一次元配列であれば、C言語側で #include <stdio.h> #include <stdlib.h> int main(void) {    FILE* fp;    fp = fopen("test.dat", "wb");    if (fp == NULL) {      printf("Error: Cannot open file.\n");      exit(1);    }       double a[]={-1.5, 10.0};    int N=2;       fwrite(a, sizeof(double), N, fp);       fclose(fp);    } のように出力し、Python側で import numpy as np f=open("test.dat",mode='rb') data=np.fromfile(f,dtype='float',count=-1,sep="") print(data) のように読み込めば良い(※pythonのfloatはc言語の倍精度に相当するのでfloatで読んでいる)。

[python] numpyのhstack(np.r_)が遅いので逐次出力で高速化

イメージ
np.c_(np.hstack)やnp.r_(np.vstack)が遅かったので対処メモ。 例えば、outという配列に、同じ列数のnumpy arrayもしくはint(Error時用)が詰まっているとして、 import numpy as np ... flag=0 outdata=None for data in out: if type(data) is int: continue if flag==0: outdata=data flag=1 else: outdata=np.r_[outdata, data] np.save(outf, outdata) とするとむちゃくちゃ遅いが、最初から(Errorでない場合の)列の数がNだとわかっていれば、一度バイナリに文字列として出力して整形した方がぐっと早くなった(データの大きさや環境にもよるが1日→数時間くらい)。 import numpy as np import os ... with open(outf, mode='wb') as ff:     for p in out:         if type(p) is not int:             for pp in p:                 ff.write('\n'.join(pp.astype("str").tolist()))                 ff.write('\n') with open(outf) as ff:     data=ff.read() data=np.array(data.splitlines()).astype(float) outdata=data.reshape(data.size/N, N) np.save(outf, outdata) os.remove(outf) 大量のデータを扱う場合は後者...

[Pythonアプリ開発] Kivyを使ったpythonインターフェース [導入編]

イメージ
ここではプログラミング言語としてpythonを使い、別ウィンドウでタップやドラッグなどによって操作可能なデスクトップアプリを作ることを目指します。  注:このページの想定読者層 ・macOS(or Linux/Unix)ユーザ、もしくはそれに準ずる環境構築ができている ・pythonを導入済みで、ある程度触ったことがある(pythonは有名な高級言語で、参考ページも豊富なため、それらを参照しながら読むことはもちろん可能) アプリ開発のためのライブラリは、Tkinter、Kivy、PyQt、wxWidgets、wxPythonなど様々ありますが、ここでは他ライブラリと組み合わせてWindows, Mac, Androidと手広く応用可能な「Kivy」を使っていきます。 Kivyは、コマンドライン(macのターミナル)から、 pip install kivy でインストール可能です。 この時「Kivy-Garden」も一緒にインストールされます。 Kivy-Gardenを使うと、様々なモジュールが使用できるようになります。 例えば、 ・タブ切り替え ・画面遷移アニメーション ・数値の選択(ダイヤル方式やバーなど多種) ・タップ・ドラッグ操作補助 などといった基本的なものはもちろん、さらには ・メディアプレーヤー ・3DCGデータ表示 など多少マニアックなものまであります。 モジュール一覧: https://github.com/kivy-garden これらのモジュールを使う際には、再びコマンドラインから garden install androidtabs と打つことで使えるようになります(上の例ではandroidtabsモジュールをインストール)。 サンプルプログラム: from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button from kivy.garden.androidtabs import * class MyTab(BoxLayout, AndroidTabsBase):     pass class MyApp(App):     def build(self): ...