我有一个非常大的2D数组,看起来像这样:
a= [[a1, b1, c1], [a2, b2, c2], ..., [an, bn, cn]]
使用numpy,是否有一种简单的方法来获得一个新的2D数组,例如从初始数组中获得2个随机行a(无需替换)?
a
例如
b= [[a4, b4, c4], [a99, b99, c99]]
>>> A = np.random.randint(5, size=(10,3)) >>> A array([[1, 3, 0], [3, 2, 0], [0, 2, 1], [1, 1, 4], [3, 2, 2], [0, 1, 0], [1, 3, 1], [0, 4, 1], [2, 4, 2], [3, 3, 1]]) >>> idx = np.random.randint(10, size=2) >>> idx array([7, 6]) >>> A[idx,:] array([[0, 4, 1], [1, 3, 1]])
一般情况下将其放在一起:
A[np.random.randint(A.shape[0], size=2), :]
对于非替换(numpy 1.7.0+):
A[np.random.choice(A.shape[0], 2, replace=False), :]
我不认为有一种很好的方法可以在不替换1.7之前生成随机列表。也许您可以设置一个小的定义,以确保两个值不相同。