从numpy数组中选择两个随机行

Dum*_*Guy 9 python arrays random numpy

我有一个numpy数组

[[  5.80084178e-05   1.20779787e-02  -2.65970238e-02]
 [ -1.36810406e-02   6.85722519e-02  -2.60280724e-01]
 [  4.21996519e-01  -1.43644036e-01   2.12904690e-01]
 [  3.03098198e-02   1.50170659e-02  -1.09683402e-01]
 [ -1.50776089e-03   7.22369575e-03  -3.71181228e-02]
 [ -3.04448275e-01  -3.66987035e-01   1.44618682e-01]
 [ -1.46744916e-01   3.47112167e-01   3.09550267e-01]
 [  1.16567762e-03   1.72858807e-02  -9.39297514e-02]
 [  1.25896836e-04   1.61310167e-02  -6.00253128e-02]
 [  1.65062798e-02   1.96933143e-02  -4.26540031e-02]
 [ -3.78020965e-03   7.51770012e-03  -3.67852984e-02]]
Run Code Online (Sandbox Code Playgroud)

我想从这些中选择任意两个随机行,所以输出将是 -

[[ -1.36810406e-02   6.85722519e-02  -2.60280724e-01]
[  1.16567762e-03   1.72858807e-02  -9.39297514e-02]]
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 9

我相信你只是在寻找:

#Create a random array
>>> a = np.random.random((5,3))
>>> a
array([[ 0.26070423,  0.85704248,  0.82956827],
       [ 0.26840489,  0.75970263,  0.88660498],
       [ 0.5572771 ,  0.29934986,  0.04507683],
       [ 0.78377012,  0.66445244,  0.08831775],
       [ 0.75533819,  0.05128844,  0.49477196]])

#Select random rows based on the rows in your array
#The 2 value can be changed to select any number of rows
>>> b = np.random.randint(0,a.shape[0],2)
>>> b
array([1, 2])

#Slice array a
>>> a[b]
array([[ 0.26840489,  0.75970263,  0.88660498],
       [ 0.5572771 ,  0.29934986,  0.04507683]])
Run Code Online (Sandbox Code Playgroud)

或者干脆:

a[np.random.randint(0,a.shape[0],2)]
Run Code Online (Sandbox Code Playgroud)

  • @DummyGuy考虑使用`np.random.choice(a.shape [0],2,replace = False)`. (2认同)