本家Pythonから単体でjupyter notebookを使う(Windows10)追加:仮想環境を使う、切り替える

venvで仮想環境を構築しているときに、jupyter notebook上で仮想環境を使うことができます。

まず、コマンドプロンプト上で仮想環境をactivate後に、
 
 

pip install ipykernel


次に、
 

ipython kernel install --user --name=仮想環境の名前


これでjupyter notebook起動するとnewのところで仮想環境を選べるようになります。またすでに作ったファイルでもKernel→change kernelで仮想環境を変更することができます。

本家Pythonから単体で(Anacondaなしで)jupyter notebookを使う(Windows10)

 独学プログラマー、Python1年生でPythonのプログラミングを始めたので、はじめはIDLEを使用していました。
その後はjupyter notebookを導入してメインで使っています。

jupyter notebookはAnacondaからセットで導入することが多いと思いますが、はじめに本家Pythonをインストールしている際などjupyter notebookを単独で(Anacondaなしで)インストールする場合もあると思いその手順をメモしました。


インストールはそう難しくはなく、

コマンドプロンプトを起動して、



python -m pip install jupyter


と入力。

ちょっとが時間がかかりますがjupyter notebookがインストールされます。


次に、



  where jupyter

でjupyterのある場所を探して、その場所にたどりついたらjupyter notebook.exeをクリックします(jupyter.exeではなく)。


→ そうするとjupyter notebookが起動します!

またはコマンドプロンプトから



jupyter notebook

 
と入力しても起動します。


また、いちいちjupyter notebookのあるディレクトリに移動するのも面倒なのでショートカットを作ってDesktopなどに置いておくと簡単に起動できます。


参考にしたサイト
Jupyter notebookをWindows10にインストール

図解!Jupyter Notebookを徹底解説!(インストール・使い方・起動・終了方法)

ほかに(Anacondaですが)
Pythonの為のJupyter Notebookの環境準備編 


numpy.where()を使った配列処理

画像処理などで、Numpyの配列に対して条件により処理を行うとき、for文をまわして要素にアクセスする場合とnumpy.where()を使う場合と速さを比較しました。 

 

 numpy.where(条件, 満たした場合の値, 満たさない場合の値)

という使い方です。

 

まず操作するデータを作成します。


import numpy as np
import time

# randintで画素数256x256の100枚のデータをランダムで作成

np.random.seed(seed=1)

array1 = np.random.randint(0, 256, size=6553600).reshape(100, 256, 256)

(これはnumpy.randint()を使って作ったものなので画像としては無茶苦茶です)

 

このデータ配列に対して、画素値が50より大でかつ200以下のものを抽出した画像を作る操作を行います(つまり50~200以外は画素値0となります)。 

 

for文でこれを処理します。


# 画素値が50より大で200以下はそのまま,それ以外は画素値を0の処理を行い新しい配列として格納
# その処理時間を測定

start = time.time()

array2 = np.zeros_like(array1)

for i in range(0, 256):
    for j in range(0, 256):
        for k in range(0, 100):
            if (array1[k, j, i] > 50) and (array1[k, j, i] <= 200):
                array2[k, j, i] = array1[k, j, i]


t = time.time() - start
print(t)

結果は 10.067001104354858secでした。
 
 
次に同じ処理をnumpy.where()を使って行います。

# 同じ操作をnumpy.where()を使って処理
# その処理時間を測定

start= time.time()

array3 = np.where((array1 > 50) & (array1 <= 200), array1, 0)

t = time.time() - start
print(t)

結果は 0.08173227310180664secと、numpy.where()を使うほうが圧倒的に速く、この処理自体のコードは1行のみでした。

 

 上のコードのように条件が複数ある場合はかっこでくくって、&(かつ)や|(または)でつなげます。andやorではないので注意を。

python print

print_pythonnote print ¶ 言葉や数値を出力する ¶ In [ ]: print ( "...