我怎样才能洗牌结构化数组。numpy.random.shuffle
似乎不起作用。x
此外,在以下示例中是否可以仅对给定字段进行洗牌。
import numpy as np
data = [(1, 2), (3, 4.1), (13, 77), (5, 10), (11, 30)]
dtype = [('x', float), ('y', float)]
data1=np.array(data, dtype=dtype)
data1
>>> array([(1.0, 2.0), (3.0, 4.1), (13.0, 77.0), (5.0, 10.0), (11.0, 30.0)],
dtype=[('x', '<f8'), ('y', '<f8')])
np.random.seed(10)
np.random.shuffle(data)
data
>>> [(13, 77), (5, 10), (1, 2), (11, 30), (3, 4.1)]
np.random.shuffle(data1)
data1
>>> array([(1.0, 2.0), (3.0, 4.1), (1.0, 2.0), (3.0, 4.1), (1.0, 2.0)],
dtype=[('x', '<f8'), ('y', '<f8')])
我知道我可以明确给出随机索引,
data1[np.random.permutation(data1.shape[0])]
但我想要一个适当的洗牌。