Numpy:如何从2D数组中获取随机行集?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (83)

我有一个非常大的二维数组,看起来像这样:

a=
[[a1, b1, c1],
 [a2, b2, c2],
 ...,
 [an, bn, cn]]

使用numpy,是否有一种简单的方法可以从初始数组a中获得一个新的二维数组,例如两个随机行(不需要替换)?

G.

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之前产生随机列表而不进行替换。也许您可以设置一个小的定义,以确保这两个值不相同。

用户回答回答于

A[np.random.choice(A.shape[0], num_rows_2_sample, replace=False)]

将REPLE=FALSE改为True以获得相同的内容,但使用替换。

扫码关注云+社区