ユニットテストフレームワークを利用したNumPyの練習問題100
NumPyコードの実行結果を正しいAssert文で答える演習問題です。
NumPyによる配列の操作や関数の実行結果を答えることで、公式チュートリアルを正しく理解出来ているかを確認できます。(または、どこを理解出来てないか確認できます)
- Python 3
- NumPy 1.14
- PyCharmなどのユニットテストを実行できる環境
ここでは、統合開発環境として、PyCharmを利用していますが、VSCodeなどでも可。
公式チュートリアルの各章のトピック毎に演習問題があります。
NumPyバージョン1.14の公式チュートリアルをベースに作成しています。
ファイル名 | トピック |
---|---|
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 | ユニバーサル関数 |
- このリポジトリをクローン
- PyCharmなどの統合開発環境でプロジェクトを作成し開く
- クローン直後は間違ったAssert文になっているので全テストが失敗します
- NumPy公式チュートリアルを参考にして正しいAssert文でNumPyコードの実行結果を当てて下さい
- 全問正解すると上記のスクショのような「All tests passed」のグリーンバーになります
以下はNumPyのインデックス参照に関する演習問題です。
(問題1) xの部分を書いて正しいAssert文にして下さい。
import unittest
import numpy as np
from numpy.testing import assert_array_equal
# ファンシーなインデックス付けとトリック
class TestArrayIndexing(unittest.TestCase):
# インデックス配列によるインデックス付け
def test_fancy_indexing(self):
vector = np.array([7, 6, 5])
assert_array_equal(vector[[2, 0, 1]], np.array([x, x, x]))
# ブール型配列によるインデックス付け
def test_indexing_with_boolean_arrays(self):
metrix = np.arange(9).reshape(3, 3)
assert_array_equal(metrix > 4, np.array([[x, x, x],
[x, x, x],
[x, x, x]]))
# ブール型配列によるインデックス付け(エレメントの選択)
def test_indexing_with_selected_elements(self):
metrix = np.arange(9).reshape(3, 3)
assert_array_equal(metrix[metrix > 4], np.array([x, x, x, x]))
# ブール型配列によるインデックス付け(値の代入)
def test_indexing_with_assignments(self):
metrix = np.arange(9).reshape(3, 3)
metrix[metrix > 4] = 0
assert_array_equal(metrix, np.array([[x, x, x],
[x, x, x],
[x, x, x]]))
if __name__ == '__main__':
unittest.main()
MITライセンス
- NumPy - Quickstart tutorial 1.14
- Python - Unittest
- Rougier - 100 numpy exercises
- 東京大学 松尾研究室 - Numpy Test System