Help us understand the problem. What is going on with this article?

第2回 はじめてのJupyter

More than 1 year has passed since last update.

はじめに

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"
0x20FE
関心領域 RF over IP; particle filter; PLL over Ethernet; QoS; Radio systems for IP; IP over TS; IPTV; IP multicasting; P2P; Multimedia systems; PSI/SI, video coding
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away