code: def test_shuffle_expr():
      a = mt.random.rand(10, 3, chunk_size=2)
      b = md.DataFrame(mt.random.rand(10, 5), chunk_size=2)
  
      new_a, new_b = shuffle(a, b, random_state=0)
  
      assert new_a.op is new_b.op
      assert isinstance(new_a.op, LearnShuffle)
      assert new_a.shape == a.shape
      assert new_b.shape == b.shape
      assert b.index_value.key != new_b.index_value.key
  
      new_a, new_b = tile(new_a, new_b)
  
      assert len(new_a.chunks) == 10
      assert np.isnan(new_a.chunks[0].shape[0])
      assert len(new_b.chunks) == 15
      assert np.isnan(new_b.chunks[0].shape[0])
      assert (
          new_b.chunks[0].index_value.key
          != new_b.chunks[1].index_value.key
      )
      assert new_a.chunks[0].op.seeds == new_b.chunks[0].op.seeds
  
      c = mt.random.rand(10, 5, 3, chunk_size=2)
      d = md.DataFrame(mt.random.rand(10, 5), chunk_size=(2, 5))
  
      new_c, new_d = shuffle(c, d, axes=(0, 1), random_state=0)
  
      assert new_c.op is new_d.op
      assert isinstance(new_c.op, LearnShuffle)
      assert new_c.shape == c.shape
      assert new_d.shape == d.shape
      assert d.index_value.key != new_d.index_value.key
      assert not np.all(
          new_d.dtypes.index[:-1] < new_d.dtypes.index[1:]
      )
      pd.testing.assert_series_equal(
          d.dtypes, new_d.dtypes.sort_index()
      )
  
      new_c, new_d = tile(new_c, new_d)
  
      assert len(new_c.chunks) == 5 * 1 * 2
      assert np.isnan(new_c.chunks[0].shape[0])
      assert len(new_d.chunks) == 5
      assert np.isnan(new_d.chunks[0].shape[0])
      assert new_d.chunks[0].shape[1] == 5
      assert (
          new_d.chunks[0].index_value.key
          != new_d.chunks[1].index_value.key
      )
      pd.testing.assert_series_equal(
          new_d.chunks[0].dtypes.sort_index(), d.dtypes
      )
      assert new_c.chunks[0].op.seeds == new_d.chunks[0].op.seeds
      assert len(new_c.chunks[0].op.seeds) == 1
      assert new_c.chunks[0].op.reduce_sizes == (5,)
  
      with pytest.raises(ValueError):
          a = mt.random.rand(10, 5)
          b = mt.random.rand(10, 4, 3)
          shuffle(a, b, axes=1)
  
      with pytest.raises(TypeError):
          shuffle(a, b, unknown_param=True)
  
      assert isinstance(shuffle(mt.random.rand(10, 5)), mt.Tensor)
  
file_path: mars/mars/learn/utils/tests/test_shuffle.py
imports: import numpy
  import pandas
  import pytest
  from ....None import tensor
  from ....None import dataframe
  from ....core import tile
  from ..None import shuffle
  from ..shuffle import LearnShuffle
label_desc: Use image node_id 1 for calling a global function with example usage: test_shuffle_expr() without return types