comparison DEPENDENCIES/mingw32/Python27/Lib/site-packages/numpy/lib/tests/test_arraypad.py @ 87:2a2c65a20a8b

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