‫なるほど｡
‫よし､ よし｡
‫これまでの数回のビデオでは､ numpyの配列を作成するさまざまな方法について見てきました｡
‫どのように見ることができるかを見てきました｡
‫では､ 楽しいところを考えてみましょう｡
‫それでは､ 異なる配列をどのように操作し､ 比較するか考えてみましょう｡
‫機械学習の肝はここにあるのですね｡
‫計算をしたり､ 異なる数の配列からパターンを見つけたりする操作です｡
‫では､ さっそく始めてみましょう｡
‫ノートをきれいに整え､ 操作したり比較したりするので､ 別の見出しをつけます｡
‫スペルはあってるかな？
‫だいたいこの見出しに誤字があるんです｡
‫配列の操作と比較
‫美しい｡
‫ここで少し小見出しをつけるのは､ numpyを使ったpandasのように､ 数字を操作する方法を思いついたら､
‫おそらくそれができるようになるからです｡
‫そこで､ 最初に見ていくのはリフマチックです｡
‫さあ､ どうぞ｡
‫ラッキーエンコーディングは､ 私のスペリング能力より少し優れていますが､ 算術は基本的な数学の方程式のための空想の言葉です｡
‫それでは､ まずA1配列の確認から始めましょう｡
‫先ほど作成しました｡
‫A1素晴らしい｡
‫もう一つonesというのを作ります｡
‫実は､ すでにあるんです｡
‫うん｡
‫美しい｡
‫でも､ 再現したかったら､ 3つ目を空けるんだ｡
‫どのようなものか確認するためです｡
‫1は素晴らしい｡
‫なるほど｡
‫では､ この素敵でシンプルなプラスを見てみましょう｡ では､ 右側のプラスを1つにするとどうなると思いますか？
‫その話はやめよう､ ダニエル｡
‫コードを実行してみましょう｡
‫美しい｡
‫I one plus ones.
‫つまり､ 1＋1＝2､ 2＋1＝3､ 3＋1＝4となるわけです｡
‫素晴らしい｡
‫つまり､ 両方の配列の同じ位置にある異なる要素を足し合わせただけなのです｡
‫つまり､ ゼロの位置の1＋1は､ 最初の位置の2＋1＝3に等しいのです｡
‫そして､ 2番目のポジションは､ 3＋1＝4です｡
‫わかりました｡
‫では､ 続けていきましょう｡
‫もう少し選択肢を見てみましょう｡
‫ねえ､ 1マイナス1｡
‫ここで何が起こるかわかりますか？
‫012だから､ 1から1を引いただけ｡
‫突き進もう｡
‫では､ Iを1倍にしてみましょう｡
‫なるほど､ ones配列はすべてonesで､ one by oneを繰り返すだけですからね｡
‫1の倍は1､ 2の倍は2､ といった具合に｡
‫別の配列を持ってこよう｡
‫A2です｡
‫さあ､ どうぞ｡
‫さて､ これは1と2を掛け合わせると面白いことになります｡
‫どうなるんだろう？
‫え？
‫見てみよう｡
‫これをやり遂げましょう｡
‫だから､ 一本化したんです｡
‫これは
‫もう一度､ すべてを一度に見ることができるように､ ひとつにまとめよう｡
‫A1です｡
‫1×1は1､ 2×2は4です｡
‫3回 3． 3は9です｡ 9.
‫なるほどね｡
‫しかし､ この2列目はどうでしょう？
‫うーん｡
‫見てわかるかどうか｡
‫1､ 4､ 4､ 5の2倍で10です｡
‫うん｡
‫3回 6． 5は19です｡ 5.
‫そのためにPythonを使ってみよう｡
‫6. 5.
‫19歳です｡ 5.
‫あ､ この細胞は取り除けるんだ｡
‫そんなことは望んでいない｡
‫実は､ ツールバーのエスケープXは絶対に使わないでください｡
‫つまり､ これは､ この3つの数字を1として､ この行で掛け合わせ､ ここに入れ､
‫さらに同じことを1として､ この行で掛け合わせたものです｡
‫へぇー｡
‫それは面白いですね｡
‫まず､ もう一つの配列であるA3を見てみましょう｡
‫この2つのA2とA3を組み合わせてみましょう｡ A2×A3です｡
‫オペランドを図形と一緒に放送することができませんでした｡
‫2､ 3
‫2､ 3､ 3
‫え？
‫オペレーションを一緒に放送することはできませんでした｡
‫それは面白いですね｡
‫冒頭のコンセプトビデオで､ numpyが高速なのはブロードキャストと呼ばれる技術によってコードをベクトル化するからだという話をしたのを覚えています｡
‫まあ､ これはこれでいいんですけどね｡
‫しかし､ そこまで速くなるには､ 放送にはいくつかのルールがある｡
‫では､ それを調べてみましょう｡
‫Num py放送｡
‫これでよしとしよう｡
‫ドキュメント放送のナマに行くんです｡
‫それをクリックします｡
‫ブロードキャストとは､ NumPyが算術演算中に異なる形状の配列をどのように扱うかを説明する言葉であり､ まさに我々が行っていることである｡
‫異なる形状を持つ配列に対して､ ある演算を使おうとしているのです｡
‫だから､ 3もあれば2もある｡
‫形が違うので､ その分エラーが出るんです｡
‫では､ ここで見てみましょう｡
‫ある制約のもとで､ 小さい方の配列が大きい方の配列にまたがって放送されるため､ 両者の形状は互換性があります｡
‫なるほど､ 1回と2回でここまでのことが起こるのは納得です｡
‫小さい方の配列は大きい方の配列にまたがって放送されるので､ 両者の形状は互換性があります｡
‫これは理にかなっていますね｡
‫この行とこの行をまたいで放送しているので､ 出力は大きなアレイと互換性のある形をしています｡
‫よし､ このまま行こう｡
‫ここにいくつかの例があります｡
‫つまり､ これらは2つの配列の掛け算です｡
‫同じ形をしているんですよ｡
‫1､ 2､ 3から2､ 8まで｡
‫回Bは1回2回は2回です｡
‫2×2は4､ 2×3は6です｡
‫嗚呼｡
‫なるほどね｡
‫そして､ 配列の形状がある制約を満たしたときに､ この制約を緩和するのが放送ルールである｡
‫なるほど､ これならいい｡
‫このようなワークフローに入るようになったのですね｡
‫このようなエラーに遭遇した場合､ このような不一致の形状､ つまり互いに互換性のない異なる形状のエラー､
‫値のエラーに常に遭遇することになるのです｡
‫これらは､ 機械学習で常に出てくるものです｡
‫データサイエンティストや機械学習エンジニアは､ 今やっているようなドキュメントを読み､
‫問題を解決する方法を見つけ出すことが重要です｡
‫だから､ 一般放送のルール｡
‫さて､ 2つの配列を操作するとき､ NumPyはその形状を要素ごとに比較し､ 末尾の次元から始めて順次処理する｡
‫2つの次元が等しいか､ どちらかが1であるとき､ 互換性がある｡
‫さて､ ドキュメントを全部見るのではなく､ 少し時間を節約するために､ それはあなたのために残しておきます｡
‫どうすればいいか､ 考えてみてほしい｡
‫この2つをどうやって相思相愛にさせるか｡
‫この放送ニーズをどう満たすか｡
‫そこで､ 調べたいのは､ どのようにすれば3つの配列と互換性のあるように1つの配列を再形成できるかということであり､
‫それは検索にかけることかもしれません｡
‫放送のドキュメントを見ながら､ このような検索をして､ この2つの図形を揃える方法を考えてみてください｡
‫できないならできないで､ 全然いいんじゃないですか？
‫これは少し練習が必要ですが､ 今後のビデオでその方法を紹介します｡
‫今は､ 仕上げに算術を続けるだけです｡
‫で､ どこまで話したっけ？
‫掛け算はやった｡
‫1を1で割ったものを試してみよう｡
‫この小さなスラッシュは4で割ったもので､ ここで何が起こるかはおそらく予想がつくと思います｡
‫美しい｡
‫私たちの配列は似たような形をしているので､ うまくいきます｡
‫では､ 2を試してみましょう｡
‫床割り8の2をa11で割って､ 2､ 4とやってみよう｡
‫しかし､ ここでは床以外の分割が有効であることを確認します｡
‫これでよしとしよう｡
‫床分割で､ スラッシュを2つ入れるとどうなるかというと､ Pythonで見たことがあるかもしれませんね｡
‫そうでない場合は､ 割り算では小数点以下が削除されるので､ ここで四捨五入されているのがわかると思います｡
‫ブランドです｡
‫ダン・ソ 1． 01. 0, 1. 0, 1. 1.
‫しかし､ それが切り捨てられ､ 12になった｡ 166667 は 2 に切り捨てています｡
‫続けてみよう｡
‫私たちは何を見逃してきたのでしょうか｡
‫Aの広場から2の広場へ行こう｡
‫これは力です｡
‫だから､ この中にあるものはすべて2のべき乗になるんです｡
‫だから､ 2を単体で見ると､ 1×1になるんです｡
‫2×2は4､ 1×1は1､ 3｡ 3回 3． 3は10です｡ 89.
‫Pythonで確認します｡
‫素晴らしい｡
‫10. 89.
‫それは､ そこを埋めて丸くしただけです｡
‫実はNumPyには､ これで使える四角がある｡
‫つまり､ ここにある算数や視力低下などの機能は､ すべて私たちが行ってきたことなのです｡ NumPyには､ ここに相当するものがあります｡
‫さて､ あなたはどちらを使うべきでしょうか？
‫まあ､ ワークフローが何を得意としているかによるでしょうけど｡
‫だから､ 数学記号の演算を使いたいときは､ それを使えばいいんです｡
‫またはあなたが正方形を使用したい場合､ またはあなたはそれが何をするかを把握するために行くシフトタブに行くNPを追加することもできます｡
‫ここで､ docstringが要素単位で引数を追加していることを把握しよう｡
‫では､ 1つだけ試してみましょう｡
‫ただ1＋1をするのと同じです｡
‫素晴らしい｡
‫あと2､ 3個はあるんですけどね｡
‫モデューロに勝ちました｡
‫これは余りを見せてくれるんです｡
‫つまり､ a1を2で割ったものです｡
‫その行方を見届けよう｡
‫一を二で割ったもの｡
‫さあ､ 行こう｡
‫NumPyモジュロ｡
‫モード
‫これでよしとしよう｡
‫割り算の余りを要素ごと賢く返す｡
‫素晴らしい｡
‫これは､ 何をするのかよくわからない場合に､
‫どのようなワークフローで進めていけばいいのかを示す例です｡
‫いつでもドキュメントを調べて見ることができます｡
‫放送の時もそうでしたね｡
‫それをmoduloで実現したところです｡
‫1の要素をすべて2で割ると､ 残った余りが表示されるんだ｡
‫では､ 2､ モジュロ2をやってみましょう｡
‫つまり､ これはすべてを2で割ったあとの残りを示しているだけなのです｡
‫そして､ 指数関数が欲しかった人､ これが何だかわからない人､ 心配しないでください｡
‫今のところ､ numpyでできる演算は､
‫配列内のすべてのもののべき乗を取るということを強調しているだけです｡
‫以上､ NumPyでできる算術関数の一端をご紹介しました｡
‫想像できれば､ きっとできる｡
‫これはあくまでも表面上の話です｡
‫次回のビデオでは､ 独自の配列を作成し､
‫その配列に対して算術関数を使用する練習をします｡
‫何かわからないことがあれば､ コードを実行することを忘れないでください｡
‫numpyのドキュメントを見てみてください｡
‫解るかな？
‫次の動画でお会いしましょう｡
‫アグリゲーションという小さなトピックを取り上げる予定ですが､ それは次のビデオに回します｡
‫また､ お会いしましょう｡