コード例 #1
0
def test_view_as_windows_step_tuple():
    A = cp.arange(24).reshape((6, 4))
    B = view_as_windows(A, (3, 2), step=3)
    assert B.shape == (2, 1, 3, 2)
    assert B.size != A.size

    C = view_as_windows(A, (3, 2), step=(3, 2))
    assert C.shape == (2, 2, 3, 2)
    assert C.size == A.size

    # fmt: off
    cp.testing.assert_array_equal(
        C, [[[[0,  1],
              [4,  5],
              [8,  9]],
             [[2,  3],
              [6,  7],
              [10, 11]]],
            [[[12, 13],
              [16, 17],
              [20, 21]],
             [[14, 15],
              [18, 19],
              [22, 23]]]]
    )
コード例 #2
0
def test_view_as_windows_with_skip():
    A = cp.arange(20).reshape((5, 4))
    B = view_as_windows(A, 2, step=2)
    # fmt: off
    cp.testing.assert_array_equal(
        B, [[[[0, 1],
              [4, 5]],
             [[2, 3],
              [6, 7]]],
            [[[8, 9],
              [12, 13]],
             [[10, 11],
              [14, 15]]]]
    )
    # fmt: on
    C = view_as_windows(A, 2, step=4)
    assert C.shape == (1, 1, 2, 2)
コード例 #3
0
def test_view_as_windows_1D():
    A = cp.arange(10)
    window_shape = (3,)
    B = view_as_windows(A, window_shape)
    # fmt: off
    cp.testing.assert_array_equal(
        B, cp.array([[0, 1, 2],
                     [1, 2, 3],
                     [2, 3, 4],
                     [3, 4, 5],
                     [4, 5, 6],
                     [5, 6, 7],
                     [6, 7, 8],
                     [7, 8, 9]])
    )
コード例 #4
0
def test_view_as_windows_2D():
    A = cp.arange(5 * 4).reshape(5, 4)
    window_shape = (4, 3)
    B = view_as_windows(A, window_shape)
    assert B.shape == (2, 2, 4, 3)
    # fmt: off
    cp.testing.assert_array_equal(
        B, cp.array([[[[0,  1,  2],
                       [4,  5,  6],
                       [8,  9, 10],
                       [12, 13, 14]],
                      [[1,  2,  3],
                       [5,  6,  7],
                       [9, 10, 11],
                       [13, 14, 15]]],
                     [[[4,  5,  6],
                       [8,  9, 10],
                       [12, 13, 14],
                       [16, 17, 18]],
                      [[5,  6,  7],
                       [9, 10, 11],
                       [13, 14, 15],
                       [17, 18, 19]]]]))
コード例 #5
0
def test_views_non_contiguous():
    A = cp.arange(16).reshape((4, 4))
    A = A[::2, :]

    with expected_warnings(["Cannot provide views"]):
        res_b = view_as_blocks(A, (2, 2))
    res_w = view_as_windows(A, (2, 2))
    print(res_b)
    print(res_w)
    # fmt: off
    expected_b = [[[[0,  1],
                    [8,  9]],
                   [[2,  3],
                    [10, 11]]]]

    expected_w = [[[[ 0,  1],
                    [ 8,  9]],
                   [[ 1,  2],
                    [ 9, 10]],
                   [[ 2,  3],
                    [10, 11]]]]
    # fmt: on
    cp.testing.assert_array_equal(res_b, expected_b)
    cp.testing.assert_array_equal(res_w, expected_w)
コード例 #6
0
def test_view_as_windows_step_below_one():
    A = cp.arange(10)
    with pytest.raises(ValueError):
        view_as_windows(A, (11,), step=0.9)
コード例 #7
0
def test_view_as_windows_window_too_large():
    A = cp.arange(10)
    with pytest.raises(ValueError):
        view_as_windows(A, (11,))
コード例 #8
0
def test_view_as_windows_negative_window_length():
    A = cp.arange(10)
    with pytest.raises(ValueError):
        view_as_windows(A, (-1,))
コード例 #9
0
def test_view_as_windows_wrong_window_dimension():
    A = cp.arange(10)
    with pytest.raises(ValueError):
        view_as_windows(A, (2, 2))
コード例 #10
0
def test_view_as_windows_input_not_array():
    A = [1, 2, 3, 4, 5]
    with pytest.raises(TypeError):
        view_as_windows(A, (2,))