見出し画像

NumPyの練習問題100

以前のノートで「NumPy公式チュートリアルを効率的に学習する方法」としてPythonのユニットテストフレームワークを利用したNumPyのテストコードを書く方法を紹介しました。

NumPyの練習問題100 (numpy-unittest-100)

今回はこれを応用してNumPyの練習問題100を作成しました。内容としてはNumPy公式チュートリアルのトピック毎にテストケースがあって、実行結果をAssert文を書いて当てる演習問題です。

サンプル(単位行列 eye に関する演習問題)
(問1)xの部分のコードを書いて正しいAssert文にして下さい。

import unittest
import numpy as np
from numpy.testing import assert_array_equal

class TestArrayEye(unittest.TestCase):

    def test_eye_NxN(self):
        metrix = np.eye(3)
        assert_array_equal(metrix, np.array([[x, x, x],
                                             [x, x, x],
                                             [x, x, x]]))

    def test_eye_NxM(self):
        metrix = np.eye(2, 3)
        assert_array_equal(metrix, np.array([[x, x, x],
                                             [x, x, x]]))
    
    def test_eye_k1(self):
        metrix = np.eye(3, k=1)
        assert_array_equal(metrix, np.array([[x, x, x],
                                             [x, x, x],
                                             [x, x, x]]))

if __name__ == '__main__':
    unittest.main()

正解のコード

import unittest
import numpy as np
from numpy.testing import assert_array_equal

class TestArrayEye(unittest.TestCase):

    def test_eye_NxN(self):
        metrix = np.eye(3)
        assert_array_equal(metrix, np.array([[1, 0, 0],
                                             [0, 1, 0],
                                             [0, 0, 1]]))

    def test_eye_NxM(self):
        metrix = np.eye(2, 3)
        assert_array_equal(metrix, np.array([[1, 0, 0],
                                             [0, 1, 0]]))
    
    def test_eye_k1(self):
        metrix = np.eye(3, k=1)
        assert_array_equal(metrix, np.array([[0, 1, 0],
                                             [0, 0, 1],
                                             [0, 0, 0]]))

if __name__ == '__main__':
    unittest.main()

PyCharm(推奨)で実行すると以下のようなテスト結果表示になります。

対応テストケース

・test_array_basic.py(NumPyの基礎)
・test_array_broadcast.py(ブロードキャスト)
・test_array_creation.py(配列の生成)
・test_array_eye.py(単位行列)
・test_array_indexing.py(インデックス参照)
・test_array_operation.py(基本的な操作)
・test_array_reshape.py(形状の操作)
・test_array_select.py(配列の選択)
・test_array_slicing.py(スライス)
・test_array_stack.py(配列のスタック)
・test_array_stats.py(統計関数)
・test_array_ufunc.py(ユニバーサル関数)

numpy-unittest-100

この練習問題は以下のGitHubで公開していますのでローカルにクローンしてPyCharm(推奨)で試してみてはいかがでしょうか。NumPy力のアップの役に立てれば幸いです。


最後まで読んで頂きありがとうございます。もしこのノートを気に入ってくれたなら下記のボタンよりフォロー&ブックマーク宜しくお願いします。

【参考文献】
NumPy - Quickstart tutorial https://docs.scipy.org/doc/numpy/user/quickstart.html.
@naoya_t - 私訳「暫定的 NumPy チュートリアル」(日本語訳)http://naoyat.hatenablog.jp/entry/2011/12/29/021414.
Python - 26.4. unittest — ユニットテストフレームワーク https://docs.python.jp/3/library/unittest.html.
Rougier - 100 numpy exercises https://github.com/rougier/numpy-100.
東京大学 松尾研究室 - Numpy Test System.

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

4

Fookie Monster

IT企業で12年間プログラマ→個人事業主| 本業はAndroid/iOSアプリの開発。余った時間で機械学習・深層学習(ディープラーニング)を勉強中。人工知能(AI)を勉強中な方に少しでも役に立てればと思います。https://github.com/FookieMonster

機械学習

1つ のマガジンに含まれています
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。