@@ -123,6 +123,12 @@ def test_array_1d(self):
123
123
assert_array_equal (a [:10 ], z [:10 ])
124
124
assert_array_equal (a [10 :20 ], z [10 :20 ])
125
125
assert_array_equal (a [- 10 :], z [- 10 :])
126
+ assert_array_equal (a [:10 , ...], z [:10 , ...])
127
+ assert_array_equal (a [10 :20 , ...], z [10 :20 , ...])
128
+ assert_array_equal (a [- 10 :, ...], z [- 10 :, ...])
129
+ assert_array_equal (a [..., :10 ], z [..., :10 ])
130
+ assert_array_equal (a [..., 10 :20 ], z [..., 10 :20 ])
131
+ assert_array_equal (a [..., - 10 :], z [..., - 10 :])
126
132
# ...across chunk boundaries...
127
133
assert_array_equal (a [:110 ], z [:110 ])
128
134
assert_array_equal (a [190 :310 ], z [190 :310 ])
@@ -135,6 +141,18 @@ def test_array_1d(self):
135
141
eq (a [42 ], z [np .int32 (42 )])
136
142
eq (a [42 ], z [np .uint64 (42 )])
137
143
eq (a [42 ], z [np .uint32 (42 )])
144
+ # too many indices
145
+ with assert_raises (IndexError ):
146
+ z [:, :]
147
+ with assert_raises (IndexError ):
148
+ z [0 , :]
149
+ with assert_raises (IndexError ):
150
+ z [:, 0 ]
151
+ with assert_raises (IndexError ):
152
+ z [0 , 0 ]
153
+ # only single ellipsis allowed
154
+ with assert_raises (IndexError ):
155
+ z [..., ...]
138
156
139
157
# check partial assignment
140
158
b = np .arange (1e5 , 2e5 )
@@ -194,37 +212,84 @@ def test_array_2d(self):
194
212
eq (a .nbytes , z .nbytes )
195
213
eq (50 , z .nchunks_initialized )
196
214
197
- # check slicing
215
+ # check array-like
198
216
assert_array_equal (a , np .array (z ))
217
+
218
+ # check slicing
219
+
220
+ # total slice
199
221
assert_array_equal (a , z [:])
200
222
assert_array_equal (a , z [...])
201
223
# noinspection PyTypeChecker
202
224
assert_array_equal (a , z [slice (None )])
225
+
226
+ # slice first dimension
203
227
assert_array_equal (a [:10 ], z [:10 ])
204
228
assert_array_equal (a [10 :20 ], z [10 :20 ])
205
229
assert_array_equal (a [- 10 :], z [- 10 :])
230
+ assert_array_equal (a [:10 , :], z [:10 , :])
231
+ assert_array_equal (a [10 :20 , :], z [10 :20 , :])
232
+ assert_array_equal (a [- 10 :, :], z [- 10 :, :])
233
+ assert_array_equal (a [:10 , ...], z [:10 , ...])
234
+ assert_array_equal (a [10 :20 , ...], z [10 :20 , ...])
235
+ assert_array_equal (a [- 10 :, ...], z [- 10 :, ...])
236
+ assert_array_equal (a [:10 , :, ...], z [:10 , :, ...])
237
+ assert_array_equal (a [10 :20 , :, ...], z [10 :20 , :, ...])
238
+ assert_array_equal (a [- 10 :, :, ...], z [- 10 :, :, ...])
239
+
240
+ # slice second dimension
206
241
assert_array_equal (a [:, :2 ], z [:, :2 ])
207
242
assert_array_equal (a [:, 2 :4 ], z [:, 2 :4 ])
208
243
assert_array_equal (a [:, - 2 :], z [:, - 2 :])
244
+ assert_array_equal (a [..., :2 ], z [..., :2 ])
245
+ assert_array_equal (a [..., 2 :4 ], z [..., 2 :4 ])
246
+ assert_array_equal (a [..., - 2 :], z [..., - 2 :])
247
+ assert_array_equal (a [:, ..., :2 ], z [:, ..., :2 ])
248
+ assert_array_equal (a [:, ..., 2 :4 ], z [:, ..., 2 :4 ])
249
+ assert_array_equal (a [:, ..., - 2 :], z [:, ..., - 2 :])
250
+
251
+ # slice both dimensions
209
252
assert_array_equal (a [:10 , :2 ], z [:10 , :2 ])
210
253
assert_array_equal (a [10 :20 , 2 :4 ], z [10 :20 , 2 :4 ])
211
254
assert_array_equal (a [- 10 :, - 2 :], z [- 10 :, - 2 :])
212
- # ...across chunk boundaries...
255
+
256
+ # slicing across chunk boundaries
213
257
assert_array_equal (a [:110 ], z [:110 ])
214
258
assert_array_equal (a [190 :310 ], z [190 :310 ])
215
259
assert_array_equal (a [- 110 :], z [- 110 :])
260
+ assert_array_equal (a [:110 , :], z [:110 , :])
261
+ assert_array_equal (a [190 :310 , :], z [190 :310 , :])
262
+ assert_array_equal (a [- 110 :, :], z [- 110 :, :])
216
263
assert_array_equal (a [:, :3 ], z [:, :3 ])
217
264
assert_array_equal (a [:, 3 :7 ], z [:, 3 :7 ])
218
265
assert_array_equal (a [:, - 3 :], z [:, - 3 :])
219
266
assert_array_equal (a [:110 , :3 ], z [:110 , :3 ])
220
267
assert_array_equal (a [190 :310 , 3 :7 ], z [190 :310 , 3 :7 ])
221
268
assert_array_equal (a [- 110 :, - 3 :], z [- 110 :, - 3 :])
222
- # single item
269
+
270
+ # single row/col/item
223
271
assert_array_equal (a [0 ], z [0 ])
224
272
assert_array_equal (a [- 1 ], z [- 1 ])
273
+ assert_array_equal (a [:, 0 ], z [:, 0 ])
274
+ assert_array_equal (a [:, - 1 ], z [:, - 1 ])
225
275
eq (a [0 , 0 ], z [0 , 0 ])
226
276
eq (a [- 1 , - 1 ], z [- 1 , - 1 ])
227
277
278
+ # too many indices
279
+ with assert_raises (IndexError ):
280
+ z [:, :, :]
281
+ with assert_raises (IndexError ):
282
+ z [0 , :, :]
283
+ with assert_raises (IndexError ):
284
+ z [:, 0 , :]
285
+ with assert_raises (IndexError ):
286
+ z [:, :, 0 ]
287
+ with assert_raises (IndexError ):
288
+ z [0 , 0 , 0 ]
289
+ # only single ellipsis allowed
290
+ with assert_raises (IndexError ):
291
+ z [..., ...]
292
+
228
293
# check partial assignment
229
294
b = np .arange (10000 , 20000 ).reshape ((1000 , 10 ))
230
295
z [190 :310 , 3 :7 ] = b [190 :310 , 3 :7 ]
0 commit comments