LoginSignup
1
4

More than 3 years have passed since last update.

第2回 はじめてのJupyter

Last updated at Posted at 2019-08-13

はじめに

PYNQ第二回は、はじめてのJupyterです。
Webベースでプロジェクト管理ができるなんて、いい時代。

第1回 Setup PYNQ-Z1
第2回 はじめてのJupyter
第3回 pythonとPYNQ PL資源へのアクセス
第4回 PYNQ OVERLAY
第5回 PYNQのOverlayを作ってみた
第6回 カスタムIPを作ってPYNQ overlayに組み込む
第7回 PYNQのHDMI出力overlayを作る
番外編 python ジャンプスタート

付属ドキュメントを読む

つかみ

webでPYNQに接続して解説を読む(ながめる)
/notebooks/getting_started/1_jupyter_notebooks.ipynb

PYNQのDocs Juptter Notebooks

ふむふむ。ドキュメントとコードと結果をWebpageにひとまとめになっているという理解でいいのかな。
1ページ<-->1プロジェクト(文書、コード、永続化したデータ)ということ?

コンポーネント

説明文によれば、Jupiter Notebookは、「Notebook web アプリ」「カーネル」「Notebook ドキュメント」で構成されるとのこと。

  • Notebookドキュメントが、各ページの(文書、コード、永続化されたデータ)に相当
  • カーネルは処理系で、pythonやRuby,Rなどのプログラム言語のコードを実行する。PYNQ distributionのJupyter Notebookにインストールされているのはpythonだけ。(と書いてあるが、shellとか使える。あとで試す)
  • Notebook Webアプリが、それらページデータをWebページに変換するとともに、ブラウザ操作によって発行されたリクエストを処理してページデータを更新したり、データとコードをカーネルに渡して処理を行わせる。

NoteBookの基本

記述はcellと呼ばれるテキストフィールドに記入するようです。cellのタイプはページ上部のツールバーにて、cellやmarkdownなど選ぶことができます。

  • markdownを選び、cellにマークダウン記法に基づくテキストを入力すると、reload時にそれが反映されます。
  • codeを選び、そこにpythonのコード入力し、ツールバーの「|>RUN」をクリックすると、実行結果がセルの下に表示されます。

試してみよう

@taka4sato さんのJupyter事始めが詳しいですね。PYNQではすでにJupyterが起動しているのでいきなり「Jupyterの使い方」から始められる。

でも、そもそもpythonわかっていなかった!

番外編 python ジャンプスタートにすすむ

ターミナル

macOSのsafariからだど、キー入力ができないのですが、Michitaro Koike@stackoverflow さん jupyter-notebookのターミナルで半角の文字が入力できませんへの回答日本語入力の半角モードだとダメでABCならうまくいきました。に従って、「システム環境設定」/「キーボード」/「入力ソース」の画面の「+」ボタンから「英語」の[A]ABCを追加し、メニューバーでABCを選んだところ、無事入力できるようになりました。

advanced features

PYNQのJupyter notebookの高度な機能

input文

val = input('prompt')で textboxが現れて入力できる

Interactive input

引数の型に対応した入力領域が用意されて、値が変更されたところで自動的に関数を呼び出す。
interact(関数,引数1=値1,引数2=値2,...) booleanならチェックボックス、数値ならスライダーなどが現れる。

from ipywidgets import *
def ipdate(arg1,arg2,arg3): 
  ...
arg1 = widgets.IntSlider(min=10,max=1000,step=1,value=10)
interact(update, arg1=arg1,arg2=False,arg3=True)

参考 Jupyter Widgets widget list

plot

plotもできます。

%matplotlib inline
import matplotlib.pyplot as plt  # plot
import numpy as np               # numpy
from ipywidgets import *

def update(fm,amp):              # AM modulation 
    t=np.arange(0,2,0.01)         # fc=10,t=[0.2]
    y=(1+amp*np.sin(t*6.28*fm))*np.sin(t*6.28*10)
    plt.plot(t,y)
    plt.show()
amp=widgets.FloatSlider(min=0,max=0.5,step=0.1,value=0.3)
fm=widgets.FloatSlider(min=0.1,max=2,step=0.1,value=1)

interact(update,fm=fm,amp=amp)

plotの例

グラフを2つ書く時はどうするのだろう?もうひとつセルをつくるのかな 3_jupyter_notebooks_advanced_featuresによればいろいろできそう。

PYNQのJupyter notebook front endの拡張機能

3_jupyter_notebooks_advanced_featuresを試してみる

shellの呼び出し

shellの呼び出し
! ifconfig
shellの結果をpythonにわたす
files = ! ls |head -3
print(files)
pythonの値をshellに渡す
opt="-al"
!ls {opt}

magicを使う

1行に有効なline magics,セルに有効なcell magicsがある。
line magicsは'%'ではじまり、cell magicsは'%%'で始まる。

line_magicsの例_magic一覧の表示
%lsmagic
cell_magicsの例_perlを呼び出す
%%perl
print "foo"
1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4