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

时间:2014-04-03 11:17:03

标签: 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]]

我想从中选择任意两个随机行,因此输出将为 -

[[ -1.36810406e-02   6.85722519e-02  -2.60280724e-01]
[  1.16567762e-03   1.72858807e-02  -9.39297514e-02]]

3 个答案:

答案 0 :(得分:8)

我相信你只是在寻找:

#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]])

或者简单地说:

a[np.random.randint(0,a.shape[0],2)]

答案 1 :(得分:2)

你是说'阵列'吗?这对我来说就像一个清单。

尝试:

import random
out_list = random.sample(your_numpy_list,2)

这将为您提供一个列表,其中包含列表中的两个不同成员(请参阅documentation for random

答案 2 :(得分:1)

说你的数组是:

import numpy as np
a=np.random.random((11,3))

获取两个随机行:

a[randint(0,11,size=2)]

获得两个随机列:

[a[:,x] for x in randint(0,3,size=2)]

您可能还想查看random