@@ -292,56 +292,90 @@ def test_reduce_scalar_vec(vs):
292292def test_extract_vec (vs ):
293293 x , _ = vs
294294 xidx , xvals = x .extract_tuples ()
295- z = Vector .new (x .dtype , * x . shape )
295+ z = Vector .new (x .dtype , 3 )
296296 operations .extract (z , x , [0 , 1 , 3 ])
297297 idx , vals = z .extract_tuples ()
298- np_assert_equal (idx , [1 , 3 ])
298+ np_assert_equal (idx , [1 , 2 ])
299299 np_assert_allclose (vals , [10. , 30. ])
300300
301- # None == GrB_ALL
302- operations .extract (z , x , None )
303- idx , vals = z .extract_tuples ()
301+ # Extract all
302+ z2 = Vector .new (x .dtype , * x .shape )
303+ operations .extract (z2 , x , None )
304+ idx , vals = z2 .extract_tuples ()
304305 np_assert_equal (idx , xidx )
305306 np_assert_allclose (vals , xvals )
306307
307308
308309def test_extract_mat (mm ):
309310 x , _ = mm
310311 xrows , xcols , xvals = x .extract_tuples ()
311- z = Matrix .new (x .dtype , * x .shape )
312- operations .extract (z , x , [0 , 4 ], [1 , 3 , 5 ])
313- rowidx , colidx , vals = z .extract_tuples ()
314- np_assert_equal (rowidx , [0 , 0 ])
315- np_assert_equal (colidx , [3 , 5 ])
316- np_assert_allclose (vals , [1.1 , 2.2 ])
317312
318- # None == GrB_ALL
313+ # Extract all rows, all cols
314+ z = Matrix .new (x .dtype , * x .shape )
319315 operations .extract (z , x , None , None )
320316 rowidx , colidx , vals = z .extract_tuples ()
321317 np_assert_equal (rowidx , xrows )
322318 np_assert_equal (colidx , xcols )
323319 np_assert_allclose (vals , xvals )
324320
321+ # Extract some rows, some cols
322+ z2 = Matrix .new (x .dtype , 2 , 4 )
323+ operations .extract (z2 , x , [0 , 4 ], [1 , 2 , 3 , 5 ])
324+ rowidx , colidx , vals = z2 .extract_tuples ()
325+ np_assert_equal (rowidx , [0 , 0 , 1 ])
326+ np_assert_equal (colidx , [2 , 3 , 1 ])
327+ np_assert_allclose (vals , [1.1 , 2.2 , 6.6 ])
328+
329+ # Extract some rows, all cols
330+ z3 = Matrix .new (x .dtype , 2 , x .shape [1 ])
331+ operations .extract (z3 , x , [0 , 4 ], None )
332+ rowidx , colidx , vals = z3 .extract_tuples ()
333+ np_assert_equal (rowidx , [0 , 0 , 1 ])
334+ np_assert_equal (colidx , [3 , 5 , 2 ])
335+ np_assert_allclose (vals , [1.1 , 2.2 , 6.6 ])
336+
337+ # Extract all rows, some cols
338+ z4 = Matrix .new (x .dtype , x .shape [0 ], 4 )
339+ operations .extract (z4 , x , None , [1 , 5 , 3 , 2 ])
340+ rowidx , colidx , vals = z4 .extract_tuples ()
341+ np_assert_equal (rowidx , [0 , 0 , 1 , 2 , 4 ])
342+ np_assert_equal (colidx , [1 , 2 , 2 , 0 , 3 ])
343+ np_assert_allclose (vals , [2.2 , 1.1 , 3.3 , 5.5 , 6.6 ])
344+
325345
326346def test_extract_vec_from_mat (mm ):
327347 x , _ = mm
328- # Extract column
329- z = Vector .new (x .dtype , x . shape [ 0 ] )
330- operations .extract (z , x , [0 , 1 , 4 ], 3 )
348+ # Extract partial column
349+ z = Vector .new (x .dtype , 3 )
350+ operations .extract (z , x , [0 , 1 , 4 ], 2 )
331351 idx , vals = z .extract_tuples ()
352+ np_assert_equal (idx , [2 ])
353+ np_assert_allclose (vals , [6.6 ])
354+
355+ # Extract full column
356+ z1 = Vector .new (x .dtype , x .shape [0 ])
357+ operations .extract (z1 , x , None , 3 )
358+ idx , vals = z1 .extract_tuples ()
332359 np_assert_equal (idx , [0 , 1 ])
333360 np_assert_allclose (vals , [1.1 , 3.3 ])
334361
335- # Extract row
336- z = Vector .new (x .dtype , x . shape [ 1 ] )
337- operations .extract (z , x , 2 , [0 , 1 , 4 ])
338- idx , vals = z .extract_tuples ()
339- np_assert_equal (idx , [0 , 1 ])
340- np_assert_allclose (vals , [4.4 , 5.5 ])
362+ # Extract partial row
363+ z2 = Vector .new (x .dtype , 5 )
364+ operations .extract (z2 , x , 0 , [0 , 1 , 3 , 4 , 5 ])
365+ idx , vals = z2 .extract_tuples ()
366+ np_assert_equal (idx , [2 , 4 ])
367+ np_assert_allclose (vals , [1.1 , 2.2 ])
341368
342- # Extract column via transposed input
343- z = Vector .new (x .dtype , x .shape [0 ])
344- operations .extract (z , x , 3 , [0 , 1 , 4 ], desc = desc .T0 )
345- idx , vals = z .extract_tuples ()
346- np_assert_equal (idx , [0 , 1 ])
347- np_assert_allclose (vals , [1.1 , 3.3 ])
369+ # Extract full row
370+ z3 = Vector .new (x .dtype , x .shape [1 ])
371+ operations .extract (z3 , x , 0 , None )
372+ idx , vals = z3 .extract_tuples ()
373+ np_assert_equal (idx , [3 , 5 ])
374+ np_assert_allclose (vals , [1.1 , 2.2 ])
375+
376+ # Extract partial column via transposed input
377+ z3 = Vector .new (x .dtype , 3 )
378+ operations .extract (z3 , x , 2 , [0 , 1 , 4 ], desc = desc .T0 )
379+ idx , vals = z3 .extract_tuples ()
380+ np_assert_equal (idx , [2 ])
381+ np_assert_allclose (vals , [6.6 ])
0 commit comments