Chris@87
|
1 """Tests for the pad functions.
|
Chris@87
|
2
|
Chris@87
|
3 """
|
Chris@87
|
4 from __future__ import division, absolute_import, print_function
|
Chris@87
|
5
|
Chris@87
|
6 from numpy.testing import TestCase, run_module_suite, assert_array_equal
|
Chris@87
|
7 from numpy.testing import assert_raises, assert_array_almost_equal
|
Chris@87
|
8 import numpy as np
|
Chris@87
|
9 from numpy.lib import pad
|
Chris@87
|
10
|
Chris@87
|
11
|
Chris@87
|
12 class TestStatistic(TestCase):
|
Chris@87
|
13 def test_check_mean_stat_length(self):
|
Chris@87
|
14 a = np.arange(100).astype('f')
|
Chris@87
|
15 a = pad(a, ((25, 20), ), 'mean', stat_length=((2, 3), ))
|
Chris@87
|
16 b = np.array(
|
Chris@87
|
17 [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
|
Chris@87
|
18 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
|
Chris@87
|
19 0.5, 0.5, 0.5, 0.5, 0.5,
|
Chris@87
|
20
|
Chris@87
|
21 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.,
|
Chris@87
|
22 10., 11., 12., 13., 14., 15., 16., 17., 18., 19.,
|
Chris@87
|
23 20., 21., 22., 23., 24., 25., 26., 27., 28., 29.,
|
Chris@87
|
24 30., 31., 32., 33., 34., 35., 36., 37., 38., 39.,
|
Chris@87
|
25 40., 41., 42., 43., 44., 45., 46., 47., 48., 49.,
|
Chris@87
|
26 50., 51., 52., 53., 54., 55., 56., 57., 58., 59.,
|
Chris@87
|
27 60., 61., 62., 63., 64., 65., 66., 67., 68., 69.,
|
Chris@87
|
28 70., 71., 72., 73., 74., 75., 76., 77., 78., 79.,
|
Chris@87
|
29 80., 81., 82., 83., 84., 85., 86., 87., 88., 89.,
|
Chris@87
|
30 90., 91., 92., 93., 94., 95., 96., 97., 98., 99.,
|
Chris@87
|
31
|
Chris@87
|
32 98., 98., 98., 98., 98., 98., 98., 98., 98., 98.,
|
Chris@87
|
33 98., 98., 98., 98., 98., 98., 98., 98., 98., 98.
|
Chris@87
|
34 ])
|
Chris@87
|
35 assert_array_equal(a, b)
|
Chris@87
|
36
|
Chris@87
|
37 def test_check_maximum_1(self):
|
Chris@87
|
38 a = np.arange(100)
|
Chris@87
|
39 a = pad(a, (25, 20), 'maximum')
|
Chris@87
|
40 b = np.array(
|
Chris@87
|
41 [99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
|
Chris@87
|
42 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
|
Chris@87
|
43 99, 99, 99, 99, 99,
|
Chris@87
|
44
|
Chris@87
|
45 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
Chris@87
|
46 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
Chris@87
|
47 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
|
Chris@87
|
48 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
|
Chris@87
|
49 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
|
Chris@87
|
50 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
|
Chris@87
|
51 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
|
Chris@87
|
52 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
Chris@87
|
53 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
|
Chris@87
|
54 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
|
Chris@87
|
55
|
Chris@87
|
56 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
|
Chris@87
|
57 99, 99, 99, 99, 99, 99, 99, 99, 99, 99]
|
Chris@87
|
58 )
|
Chris@87
|
59 assert_array_equal(a, b)
|
Chris@87
|
60
|
Chris@87
|
61 def test_check_maximum_2(self):
|
Chris@87
|
62 a = np.arange(100) + 1
|
Chris@87
|
63 a = pad(a, (25, 20), 'maximum')
|
Chris@87
|
64 b = np.array(
|
Chris@87
|
65 [100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
Chris@87
|
66 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
Chris@87
|
67 100, 100, 100, 100, 100,
|
Chris@87
|
68
|
Chris@87
|
69 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
|
Chris@87
|
70 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
Chris@87
|
71 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
|
Chris@87
|
72 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
|
Chris@87
|
73 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
|
Chris@87
|
74 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
|
Chris@87
|
75 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
|
Chris@87
|
76 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
|
Chris@87
|
77 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
|
Chris@87
|
78 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
|
Chris@87
|
79
|
Chris@87
|
80 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
Chris@87
|
81 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
|
Chris@87
|
82 )
|
Chris@87
|
83 assert_array_equal(a, b)
|
Chris@87
|
84
|
Chris@87
|
85 def test_check_minimum_1(self):
|
Chris@87
|
86 a = np.arange(100)
|
Chris@87
|
87 a = pad(a, (25, 20), 'minimum')
|
Chris@87
|
88 b = np.array(
|
Chris@87
|
89 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
Chris@87
|
90 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
Chris@87
|
91 0, 0, 0, 0, 0,
|
Chris@87
|
92
|
Chris@87
|
93 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
Chris@87
|
94 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
Chris@87
|
95 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
|
Chris@87
|
96 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
|
Chris@87
|
97 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
|
Chris@87
|
98 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
|
Chris@87
|
99 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
|
Chris@87
|
100 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
Chris@87
|
101 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
|
Chris@87
|
102 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
|
Chris@87
|
103
|
Chris@87
|
104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
Chris@87
|
105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
Chris@87
|
106 )
|
Chris@87
|
107 assert_array_equal(a, b)
|
Chris@87
|
108
|
Chris@87
|
109 def test_check_minimum_2(self):
|
Chris@87
|
110 a = np.arange(100) + 2
|
Chris@87
|
111 a = pad(a, (25, 20), 'minimum')
|
Chris@87
|
112 b = np.array(
|
Chris@87
|
113 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
Chris@87
|
114 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
Chris@87
|
115 2, 2, 2, 2, 2,
|
Chris@87
|
116
|
Chris@87
|
117 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
|
Chris@87
|
118 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
|
Chris@87
|
119 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
Chris@87
|
120 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
|
Chris@87
|
121 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
|
Chris@87
|
122 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
|
Chris@87
|
123 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
|
Chris@87
|
124 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
|
Chris@87
|
125 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
|
Chris@87
|
126 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
|
Chris@87
|
127
|
Chris@87
|
128 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
Chris@87
|
129 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
|
Chris@87
|
130 )
|
Chris@87
|
131 assert_array_equal(a, b)
|
Chris@87
|
132
|
Chris@87
|
133 def test_check_median(self):
|
Chris@87
|
134 a = np.arange(100).astype('f')
|
Chris@87
|
135 a = pad(a, (25, 20), 'median')
|
Chris@87
|
136 b = np.array(
|
Chris@87
|
137 [49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5,
|
Chris@87
|
138 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5,
|
Chris@87
|
139 49.5, 49.5, 49.5, 49.5, 49.5,
|
Chris@87
|
140
|
Chris@87
|
141 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.,
|
Chris@87
|
142 10., 11., 12., 13., 14., 15., 16., 17., 18., 19.,
|
Chris@87
|
143 20., 21., 22., 23., 24., 25., 26., 27., 28., 29.,
|
Chris@87
|
144 30., 31., 32., 33., 34., 35., 36., 37., 38., 39.,
|
Chris@87
|
145 40., 41., 42., 43., 44., 45., 46., 47., 48., 49.,
|
Chris@87
|
146 50., 51., 52., 53., 54., 55., 56., 57., 58., 59.,
|
Chris@87
|
147 60., 61., 62., 63., 64., 65., 66., 67., 68., 69.,
|
Chris@87
|
148 70., 71., 72., 73., 74., 75., 76., 77., 78., 79.,
|
Chris@87
|
149 80., 81., 82., 83., 84., 85., 86., 87., 88., 89.,
|
Chris@87
|
150 90., 91., 92., 93., 94., 95., 96., 97., 98., 99.,
|
Chris@87
|
151
|
Chris@87
|
152 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5,
|
Chris@87
|
153 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5]
|
Chris@87
|
154 )
|
Chris@87
|
155 assert_array_equal(a, b)
|
Chris@87
|
156
|
Chris@87
|
157 def test_check_median_01(self):
|
Chris@87
|
158 a = np.array([[3, 1, 4], [4, 5, 9], [9, 8, 2]])
|
Chris@87
|
159 a = pad(a, 1, 'median')
|
Chris@87
|
160 b = np.array(
|
Chris@87
|
161 [[4, 4, 5, 4, 4],
|
Chris@87
|
162
|
Chris@87
|
163 [3, 3, 1, 4, 3],
|
Chris@87
|
164 [5, 4, 5, 9, 5],
|
Chris@87
|
165 [8, 9, 8, 2, 8],
|
Chris@87
|
166
|
Chris@87
|
167 [4, 4, 5, 4, 4]]
|
Chris@87
|
168 )
|
Chris@87
|
169 assert_array_equal(a, b)
|
Chris@87
|
170
|
Chris@87
|
171 def test_check_median_02(self):
|
Chris@87
|
172 a = np.array([[3, 1, 4], [4, 5, 9], [9, 8, 2]])
|
Chris@87
|
173 a = pad(a.T, 1, 'median').T
|
Chris@87
|
174 b = np.array(
|
Chris@87
|
175 [[5, 4, 5, 4, 5],
|
Chris@87
|
176
|
Chris@87
|
177 [3, 3, 1, 4, 3],
|
Chris@87
|
178 [5, 4, 5, 9, 5],
|
Chris@87
|
179 [8, 9, 8, 2, 8],
|
Chris@87
|
180
|
Chris@87
|
181 [5, 4, 5, 4, 5]]
|
Chris@87
|
182 )
|
Chris@87
|
183 assert_array_equal(a, b)
|
Chris@87
|
184
|
Chris@87
|
185 def test_check_mean_shape_one(self):
|
Chris@87
|
186 a = [[4, 5, 6]]
|
Chris@87
|
187 a = pad(a, (5, 7), 'mean', stat_length=2)
|
Chris@87
|
188 b = np.array(
|
Chris@87
|
189 [[4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6],
|
Chris@87
|
190 [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6],
|
Chris@87
|
191 [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6],
|
Chris@87
|
192 [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6],
|
Chris@87
|
193 [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6],
|
Chris@87
|
194
|
Chris@87
|
195 [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6],
|
Chris@87
|
196
|
Chris@87
|
197 [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6],
|
Chris@87
|
198 [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6],
|
Chris@87
|
199 [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6],
|
Chris@87
|
200 [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6],
|
Chris@87
|
201 [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6],
|
Chris@87
|
202 [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6],
|
Chris@87
|
203 [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6]]
|
Chris@87
|
204 )
|
Chris@87
|
205 assert_array_equal(a, b)
|
Chris@87
|
206
|
Chris@87
|
207 def test_check_mean_2(self):
|
Chris@87
|
208 a = np.arange(100).astype('f')
|
Chris@87
|
209 a = pad(a, (25, 20), 'mean')
|
Chris@87
|
210 b = np.array(
|
Chris@87
|
211 [49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5,
|
Chris@87
|
212 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5,
|
Chris@87
|
213 49.5, 49.5, 49.5, 49.5, 49.5,
|
Chris@87
|
214
|
Chris@87
|
215 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.,
|
Chris@87
|
216 10., 11., 12., 13., 14., 15., 16., 17., 18., 19.,
|
Chris@87
|
217 20., 21., 22., 23., 24., 25., 26., 27., 28., 29.,
|
Chris@87
|
218 30., 31., 32., 33., 34., 35., 36., 37., 38., 39.,
|
Chris@87
|
219 40., 41., 42., 43., 44., 45., 46., 47., 48., 49.,
|
Chris@87
|
220 50., 51., 52., 53., 54., 55., 56., 57., 58., 59.,
|
Chris@87
|
221 60., 61., 62., 63., 64., 65., 66., 67., 68., 69.,
|
Chris@87
|
222 70., 71., 72., 73., 74., 75., 76., 77., 78., 79.,
|
Chris@87
|
223 80., 81., 82., 83., 84., 85., 86., 87., 88., 89.,
|
Chris@87
|
224 90., 91., 92., 93., 94., 95., 96., 97., 98., 99.,
|
Chris@87
|
225
|
Chris@87
|
226 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5,
|
Chris@87
|
227 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5]
|
Chris@87
|
228 )
|
Chris@87
|
229 assert_array_equal(a, b)
|
Chris@87
|
230
|
Chris@87
|
231
|
Chris@87
|
232 class TestConstant(TestCase):
|
Chris@87
|
233 def test_check_constant(self):
|
Chris@87
|
234 a = np.arange(100)
|
Chris@87
|
235 a = pad(a, (25, 20), 'constant', constant_values=(10, 20))
|
Chris@87
|
236 b = np.array(
|
Chris@87
|
237 [10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
|
Chris@87
|
238 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
|
Chris@87
|
239 10, 10, 10, 10, 10,
|
Chris@87
|
240
|
Chris@87
|
241 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
Chris@87
|
242 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
Chris@87
|
243 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
|
Chris@87
|
244 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
|
Chris@87
|
245 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
|
Chris@87
|
246 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
|
Chris@87
|
247 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
|
Chris@87
|
248 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
Chris@87
|
249 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
|
Chris@87
|
250 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
|
Chris@87
|
251
|
Chris@87
|
252 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
|
Chris@87
|
253 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]
|
Chris@87
|
254 )
|
Chris@87
|
255 assert_array_equal(a, b)
|
Chris@87
|
256
|
Chris@87
|
257
|
Chris@87
|
258 class TestLinearRamp(TestCase):
|
Chris@87
|
259 def test_check_simple(self):
|
Chris@87
|
260 a = np.arange(100).astype('f')
|
Chris@87
|
261 a = pad(a, (25, 20), 'linear_ramp', end_values=(4, 5))
|
Chris@87
|
262 b = np.array(
|
Chris@87
|
263 [4.00, 3.84, 3.68, 3.52, 3.36, 3.20, 3.04, 2.88, 2.72, 2.56,
|
Chris@87
|
264 2.40, 2.24, 2.08, 1.92, 1.76, 1.60, 1.44, 1.28, 1.12, 0.96,
|
Chris@87
|
265 0.80, 0.64, 0.48, 0.32, 0.16,
|
Chris@87
|
266
|
Chris@87
|
267 0.00, 1.00, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00, 9.00,
|
Chris@87
|
268 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0,
|
Chris@87
|
269 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0,
|
Chris@87
|
270 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0,
|
Chris@87
|
271 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0,
|
Chris@87
|
272 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0,
|
Chris@87
|
273 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0,
|
Chris@87
|
274 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0,
|
Chris@87
|
275 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0,
|
Chris@87
|
276 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0,
|
Chris@87
|
277
|
Chris@87
|
278 94.3, 89.6, 84.9, 80.2, 75.5, 70.8, 66.1, 61.4, 56.7, 52.0,
|
Chris@87
|
279 47.3, 42.6, 37.9, 33.2, 28.5, 23.8, 19.1, 14.4, 9.7, 5.]
|
Chris@87
|
280 )
|
Chris@87
|
281 assert_array_almost_equal(a, b, decimal=5)
|
Chris@87
|
282
|
Chris@87
|
283
|
Chris@87
|
284 class TestReflect(TestCase):
|
Chris@87
|
285 def test_check_simple(self):
|
Chris@87
|
286 a = np.arange(100)
|
Chris@87
|
287 a = pad(a, (25, 20), 'reflect')
|
Chris@87
|
288 b = np.array(
|
Chris@87
|
289 [25, 24, 23, 22, 21, 20, 19, 18, 17, 16,
|
Chris@87
|
290 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
|
Chris@87
|
291 5, 4, 3, 2, 1,
|
Chris@87
|
292
|
Chris@87
|
293 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
Chris@87
|
294 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
Chris@87
|
295 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
|
Chris@87
|
296 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
|
Chris@87
|
297 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
|
Chris@87
|
298 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
|
Chris@87
|
299 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
|
Chris@87
|
300 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
Chris@87
|
301 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
|
Chris@87
|
302 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
|
Chris@87
|
303
|
Chris@87
|
304 98, 97, 96, 95, 94, 93, 92, 91, 90, 89,
|
Chris@87
|
305 88, 87, 86, 85, 84, 83, 82, 81, 80, 79]
|
Chris@87
|
306 )
|
Chris@87
|
307 assert_array_equal(a, b)
|
Chris@87
|
308
|
Chris@87
|
309 def test_check_large_pad(self):
|
Chris@87
|
310 a = [[4, 5, 6], [6, 7, 8]]
|
Chris@87
|
311 a = pad(a, (5, 7), 'reflect')
|
Chris@87
|
312 b = np.array(
|
Chris@87
|
313 [[7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7],
|
Chris@87
|
314 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
315 [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7],
|
Chris@87
|
316 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
317 [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7],
|
Chris@87
|
318
|
Chris@87
|
319 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
320 [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7],
|
Chris@87
|
321
|
Chris@87
|
322 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
323 [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7],
|
Chris@87
|
324 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
325 [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7],
|
Chris@87
|
326 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
327 [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7],
|
Chris@87
|
328 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5]]
|
Chris@87
|
329 )
|
Chris@87
|
330 assert_array_equal(a, b)
|
Chris@87
|
331
|
Chris@87
|
332 def test_check_shape(self):
|
Chris@87
|
333 a = [[4, 5, 6]]
|
Chris@87
|
334 a = pad(a, (5, 7), 'reflect')
|
Chris@87
|
335 b = np.array(
|
Chris@87
|
336 [[5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
337 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
338 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
339 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
340 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
341
|
Chris@87
|
342 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
343
|
Chris@87
|
344 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
345 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
346 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
347 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
348 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
349 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5],
|
Chris@87
|
350 [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5]]
|
Chris@87
|
351 )
|
Chris@87
|
352 assert_array_equal(a, b)
|
Chris@87
|
353
|
Chris@87
|
354 def test_check_01(self):
|
Chris@87
|
355 a = pad([1, 2, 3], 2, 'reflect')
|
Chris@87
|
356 b = np.array([3, 2, 1, 2, 3, 2, 1])
|
Chris@87
|
357 assert_array_equal(a, b)
|
Chris@87
|
358
|
Chris@87
|
359 def test_check_02(self):
|
Chris@87
|
360 a = pad([1, 2, 3], 3, 'reflect')
|
Chris@87
|
361 b = np.array([2, 3, 2, 1, 2, 3, 2, 1, 2])
|
Chris@87
|
362 assert_array_equal(a, b)
|
Chris@87
|
363
|
Chris@87
|
364 def test_check_03(self):
|
Chris@87
|
365 a = pad([1, 2, 3], 4, 'reflect')
|
Chris@87
|
366 b = np.array([1, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3])
|
Chris@87
|
367 assert_array_equal(a, b)
|
Chris@87
|
368
|
Chris@87
|
369
|
Chris@87
|
370 class TestWrap(TestCase):
|
Chris@87
|
371 def test_check_simple(self):
|
Chris@87
|
372 a = np.arange(100)
|
Chris@87
|
373 a = pad(a, (25, 20), 'wrap')
|
Chris@87
|
374 b = np.array(
|
Chris@87
|
375 [75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
|
Chris@87
|
376 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
|
Chris@87
|
377 95, 96, 97, 98, 99,
|
Chris@87
|
378
|
Chris@87
|
379 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
Chris@87
|
380 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
Chris@87
|
381 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
|
Chris@87
|
382 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
|
Chris@87
|
383 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
|
Chris@87
|
384 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
|
Chris@87
|
385 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
|
Chris@87
|
386 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
Chris@87
|
387 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
|
Chris@87
|
388 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
|
Chris@87
|
389
|
Chris@87
|
390 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
Chris@87
|
391 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
|
Chris@87
|
392 )
|
Chris@87
|
393 assert_array_equal(a, b)
|
Chris@87
|
394
|
Chris@87
|
395 def test_check_large_pad(self):
|
Chris@87
|
396 a = np.arange(12)
|
Chris@87
|
397 a = np.reshape(a, (3, 4))
|
Chris@87
|
398 a = pad(a, (10, 12), 'wrap')
|
Chris@87
|
399 b = np.array(
|
Chris@87
|
400 [[10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10,
|
Chris@87
|
401 11, 8, 9, 10, 11, 8, 9, 10, 11],
|
Chris@87
|
402 [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2,
|
Chris@87
|
403 3, 0, 1, 2, 3, 0, 1, 2, 3],
|
Chris@87
|
404 [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6,
|
Chris@87
|
405 7, 4, 5, 6, 7, 4, 5, 6, 7],
|
Chris@87
|
406 [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10,
|
Chris@87
|
407 11, 8, 9, 10, 11, 8, 9, 10, 11],
|
Chris@87
|
408 [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2,
|
Chris@87
|
409 3, 0, 1, 2, 3, 0, 1, 2, 3],
|
Chris@87
|
410 [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6,
|
Chris@87
|
411 7, 4, 5, 6, 7, 4, 5, 6, 7],
|
Chris@87
|
412 [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10,
|
Chris@87
|
413 11, 8, 9, 10, 11, 8, 9, 10, 11],
|
Chris@87
|
414 [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2,
|
Chris@87
|
415 3, 0, 1, 2, 3, 0, 1, 2, 3],
|
Chris@87
|
416 [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6,
|
Chris@87
|
417 7, 4, 5, 6, 7, 4, 5, 6, 7],
|
Chris@87
|
418 [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10,
|
Chris@87
|
419 11, 8, 9, 10, 11, 8, 9, 10, 11],
|
Chris@87
|
420
|
Chris@87
|
421 [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2,
|
Chris@87
|
422 3, 0, 1, 2, 3, 0, 1, 2, 3],
|
Chris@87
|
423 [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6,
|
Chris@87
|
424 7, 4, 5, 6, 7, 4, 5, 6, 7],
|
Chris@87
|
425 [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10,
|
Chris@87
|
426 11, 8, 9, 10, 11, 8, 9, 10, 11],
|
Chris@87
|
427
|
Chris@87
|
428 [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2,
|
Chris@87
|
429 3, 0, 1, 2, 3, 0, 1, 2, 3],
|
Chris@87
|
430 [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6,
|
Chris@87
|
431 7, 4, 5, 6, 7, 4, 5, 6, 7],
|
Chris@87
|
432 [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10,
|
Chris@87
|
433 11, 8, 9, 10, 11, 8, 9, 10, 11],
|
Chris@87
|
434 [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2,
|
Chris@87
|
435 3, 0, 1, 2, 3, 0, 1, 2, 3],
|
Chris@87
|
436 [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6,
|
Chris@87
|
437 7, 4, 5, 6, 7, 4, 5, 6, 7],
|
Chris@87
|
438 [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10,
|
Chris@87
|
439 11, 8, 9, 10, 11, 8, 9, 10, 11],
|
Chris@87
|
440 [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2,
|
Chris@87
|
441 3, 0, 1, 2, 3, 0, 1, 2, 3],
|
Chris@87
|
442 [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6,
|
Chris@87
|
443 7, 4, 5, 6, 7, 4, 5, 6, 7],
|
Chris@87
|
444 [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10,
|
Chris@87
|
445 11, 8, 9, 10, 11, 8, 9, 10, 11],
|
Chris@87
|
446 [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2,
|
Chris@87
|
447 3, 0, 1, 2, 3, 0, 1, 2, 3],
|
Chris@87
|
448 [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6,
|
Chris@87
|
449 7, 4, 5, 6, 7, 4, 5, 6, 7],
|
Chris@87
|
450 [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10,
|
Chris@87
|
451 11, 8, 9, 10, 11, 8, 9, 10, 11]]
|
Chris@87
|
452 )
|
Chris@87
|
453 assert_array_equal(a, b)
|
Chris@87
|
454
|
Chris@87
|
455 def test_check_01(self):
|
Chris@87
|
456 a = pad([1, 2, 3], 3, 'wrap')
|
Chris@87
|
457 b = np.array([1, 2, 3, 1, 2, 3, 1, 2, 3])
|
Chris@87
|
458 assert_array_equal(a, b)
|
Chris@87
|
459
|
Chris@87
|
460 def test_check_02(self):
|
Chris@87
|
461 a = pad([1, 2, 3], 4, 'wrap')
|
Chris@87
|
462 b = np.array([3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1])
|
Chris@87
|
463 assert_array_equal(a, b)
|
Chris@87
|
464
|
Chris@87
|
465
|
Chris@87
|
466 class TestStatLen(TestCase):
|
Chris@87
|
467 def test_check_simple(self):
|
Chris@87
|
468 a = np.arange(30)
|
Chris@87
|
469 a = np.reshape(a, (6, 5))
|
Chris@87
|
470 a = pad(a, ((2, 3), (3, 2)), mode='mean', stat_length=(3,))
|
Chris@87
|
471 b = np.array(
|
Chris@87
|
472 [[6, 6, 6, 5, 6, 7, 8, 9, 8, 8],
|
Chris@87
|
473 [6, 6, 6, 5, 6, 7, 8, 9, 8, 8],
|
Chris@87
|
474
|
Chris@87
|
475 [1, 1, 1, 0, 1, 2, 3, 4, 3, 3],
|
Chris@87
|
476 [6, 6, 6, 5, 6, 7, 8, 9, 8, 8],
|
Chris@87
|
477 [11, 11, 11, 10, 11, 12, 13, 14, 13, 13],
|
Chris@87
|
478 [16, 16, 16, 15, 16, 17, 18, 19, 18, 18],
|
Chris@87
|
479 [21, 21, 21, 20, 21, 22, 23, 24, 23, 23],
|
Chris@87
|
480 [26, 26, 26, 25, 26, 27, 28, 29, 28, 28],
|
Chris@87
|
481
|
Chris@87
|
482 [21, 21, 21, 20, 21, 22, 23, 24, 23, 23],
|
Chris@87
|
483 [21, 21, 21, 20, 21, 22, 23, 24, 23, 23],
|
Chris@87
|
484 [21, 21, 21, 20, 21, 22, 23, 24, 23, 23]]
|
Chris@87
|
485 )
|
Chris@87
|
486 assert_array_equal(a, b)
|
Chris@87
|
487
|
Chris@87
|
488
|
Chris@87
|
489 class TestEdge(TestCase):
|
Chris@87
|
490 def test_check_simple(self):
|
Chris@87
|
491 a = np.arange(12)
|
Chris@87
|
492 a = np.reshape(a, (4, 3))
|
Chris@87
|
493 a = pad(a, ((2, 3), (3, 2)), 'edge')
|
Chris@87
|
494 b = np.array(
|
Chris@87
|
495 [[0, 0, 0, 0, 1, 2, 2, 2],
|
Chris@87
|
496 [0, 0, 0, 0, 1, 2, 2, 2],
|
Chris@87
|
497
|
Chris@87
|
498 [0, 0, 0, 0, 1, 2, 2, 2],
|
Chris@87
|
499 [3, 3, 3, 3, 4, 5, 5, 5],
|
Chris@87
|
500 [6, 6, 6, 6, 7, 8, 8, 8],
|
Chris@87
|
501 [9, 9, 9, 9, 10, 11, 11, 11],
|
Chris@87
|
502
|
Chris@87
|
503 [9, 9, 9, 9, 10, 11, 11, 11],
|
Chris@87
|
504 [9, 9, 9, 9, 10, 11, 11, 11],
|
Chris@87
|
505 [9, 9, 9, 9, 10, 11, 11, 11]]
|
Chris@87
|
506 )
|
Chris@87
|
507 assert_array_equal(a, b)
|
Chris@87
|
508
|
Chris@87
|
509
|
Chris@87
|
510 class TestZeroPadWidth(TestCase):
|
Chris@87
|
511 def test_zero_pad_width(self):
|
Chris@87
|
512 arr = np.arange(30)
|
Chris@87
|
513 arr = np.reshape(arr, (6, 5))
|
Chris@87
|
514 for pad_width in (0, (0, 0), ((0, 0), (0, 0))):
|
Chris@87
|
515 assert_array_equal(arr, pad(arr, pad_width, mode='constant'))
|
Chris@87
|
516
|
Chris@87
|
517
|
Chris@87
|
518 class ValueError1(TestCase):
|
Chris@87
|
519 def test_check_simple(self):
|
Chris@87
|
520 arr = np.arange(30)
|
Chris@87
|
521 arr = np.reshape(arr, (6, 5))
|
Chris@87
|
522 kwargs = dict(mode='mean', stat_length=(3, ))
|
Chris@87
|
523 assert_raises(ValueError, pad, arr, ((2, 3), (3, 2), (4, 5)),
|
Chris@87
|
524 **kwargs)
|
Chris@87
|
525
|
Chris@87
|
526 def test_check_negative_stat_length(self):
|
Chris@87
|
527 arr = np.arange(30)
|
Chris@87
|
528 arr = np.reshape(arr, (6, 5))
|
Chris@87
|
529 kwargs = dict(mode='mean', stat_length=(-3, ))
|
Chris@87
|
530 assert_raises(ValueError, pad, arr, ((2, 3), (3, 2)),
|
Chris@87
|
531 **kwargs)
|
Chris@87
|
532
|
Chris@87
|
533 def test_check_negative_pad_width(self):
|
Chris@87
|
534 arr = np.arange(30)
|
Chris@87
|
535 arr = np.reshape(arr, (6, 5))
|
Chris@87
|
536 kwargs = dict(mode='mean', stat_length=(3, ))
|
Chris@87
|
537 assert_raises(ValueError, pad, arr, ((-2, 3), (3, 2)),
|
Chris@87
|
538 **kwargs)
|
Chris@87
|
539
|
Chris@87
|
540
|
Chris@87
|
541 class ValueError2(TestCase):
|
Chris@87
|
542 def test_check_simple(self):
|
Chris@87
|
543 arr = np.arange(30)
|
Chris@87
|
544 arr = np.reshape(arr, (6, 5))
|
Chris@87
|
545 kwargs = dict(mode='mean', stat_length=(3, ))
|
Chris@87
|
546 assert_raises(ValueError, pad, arr, ((2, 3, 4), (3, 2)),
|
Chris@87
|
547 **kwargs)
|
Chris@87
|
548
|
Chris@87
|
549
|
Chris@87
|
550 class ValueError3(TestCase):
|
Chris@87
|
551 def test_check_simple(self):
|
Chris@87
|
552 arr = np.arange(30)
|
Chris@87
|
553 arr = np.reshape(arr, (6, 5))
|
Chris@87
|
554 kwargs = dict(mode='mean', stat_length=(3, ))
|
Chris@87
|
555 assert_raises(ValueError, pad, arr, ((-2, 3), (3, 2)),
|
Chris@87
|
556 **kwargs)
|
Chris@87
|
557
|
Chris@87
|
558
|
Chris@87
|
559 if __name__ == "__main__":
|
Chris@87
|
560 run_module_suite()
|